Avatar billede gimmer Nybegynder
02. april 2008 - 10:45 Der er 11 kommentarer og
1 løsning

CSV fil med ekstra ,'er

Hej,
Jeg har en VBA koden som konveterer informationerne fra et excel ark til CSV, men af en eller anden grund så hvergang jeg gør dette kommer der 15-20 eksfra "," til sidst i hver linie? Det sker også hvis jeg vælger at gemme filen som CSV? nogle ideer. Mvh Lars
Avatar billede Slettet bruger
02. april 2008 - 10:49 #1
lad os se koden
Avatar billede gimmer Nybegynder
02. april 2008 - 11:12 #2
Sub CreatAndExportCSVFILE()

Dim FName As String
Dim fs
Dim WholeLine As String
Dim FNum As Integer
Dim RowNdx As Long
Dim ColNdx As Integer
Dim StartRow As Long
Dim EndRow As Long
Dim StartCol As Integer
Dim EndCol As Integer
Dim CellValue As String
Dim Sep As String

Application.ScreenUpdating = False

On Error GoTo EndMacro:

FNum = FreeFile

Sep = ","

FName = ThisWorkbook.Path & "MACRO.csv"


Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(FName) Then
Kill FName
End If

Range("A1:AG142").Select

With Selection
StartRow = .Cells(1).Row
StartCol = .Cells(1).Column
EndRow = .Cells(.Cells.Count).Row
EndCol = .Cells(.Cells.Count).Column
End With

Open FName For Output Access Write As #FNum

For RowNdx = StartRow To EndRow
WholeLine = ""
For ColNdx = StartCol To EndCol
If Cells(RowNdx, ColNdx).Value = "" Then
CellValue = ""
Else
CellValue = _
Application.WorksheetFunction.Text _
(Cells(RowNdx, ColNdx).Value, _
Cells(RowNdx, ColNdx).NumberFormat)
End If
WholeLine = WholeLine & CellValue & Sep
Next ColNdx
WholeLine = Left(WholeLine, Len(WholeLine) - Len(Sep))
Print #FNum, WholeLine
Next RowNdx

EndMacro:
On Error GoTo 0

Application.ScreenUpdating = True

Close #FNum

Range("A1").Select

End Sub
Avatar billede Slettet bruger
02. april 2008 - 11:25 #3
prøv at ændre denne For RowNdx = StartRow To EndRow
til For RowNdx = StartRow To EndRow-1
Avatar billede gimmer Nybegynder
03. april 2008 - 09:51 #4
Stadig en masse "," til sidst... det ser nogenlunde sådan ud:
1,2,3,slut,,,,,,,,,,,,,,,,,,,,
4,5,6,slut,,,,,,,,,,,,,,,,,,,,
nogle ideer?
Avatar billede kabbak Professor
03. april 2008 - 15:33 #5
nu vælger du jo området, med "Range("A1:AG142").Select"

hvis du ikke har data i de sidste 20 kolonner, vil du jo få "," for hver en af cellerne, der er tom.
Avatar billede gimmer Nybegynder
03. april 2008 - 23:21 #6
Pisselækkert :-) svar og du skal modtage dine points jeg anede ikke den var så følsom hehe... min fejl
Avatar billede kabbak Professor
03. april 2008 - 23:25 #7
et svar ;-))
Avatar billede gimmer Nybegynder
04. april 2008 - 09:50 #8
super tak. Har du evt en løsnign til at excel beder mig om et område hvor jeg kan tage det fra via noget ala msgbox? jeg forestiller mig at den skriver:
"start" så skriver jeg eks A1:A9. og så skal jeg vælge et område igen (det er to forskellige størrelser af felter jeg arbejder med i samme fil) så eksempelvis A2:AW310).... og vupti det er kommet ned i en csv fil....
mvh Lars
Avatar billede kabbak Professor
04. april 2008 - 10:36 #9
Her er et eksempel på at den spørger, du kan sætte ind i din eksisterende kode.

Jeg har kun tjekket på et område, men du kan jo prøve at teste på flere, det skrives sådan: A1:C3;G1:G3

Dim Sep As String
Dim Område As String
Application.ScreenUpdating = False

On Error GoTo EndMacro:

FNum = FreeFile

Sep = ","

FName = ThisWorkbook.Path & "MACRO.csv"


Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(FName) Then
Kill FName
End If
Område = InputBox("Indtast området således ( A1:C3 )", "Område")
If Område = "" Then Exit Sub
Range(Område).Select

With Selection
Avatar billede gimmer Nybegynder
04. april 2008 - 11:09 #10
jeg kan ikke få den til at vælge mere end et område... hvis jeg skriver a1:k9; a2:aw310 så vælger den kun første del!
virker det for dig?

her er min kode....


Sub convert()
' By dkbevl
Dim FName As String
Dim fs
Dim WholeLine As String
Dim FNum As Integer
Dim RowNdx As Long
Dim ColNdx As Integer
Dim StartRow As Long
Dim EndRow As Long
Dim StartCol As Integer
Dim EndCol As Integer
Dim CellValue As String
Dim Sep As String
Dim range1 As String
Dim range2 As String
Dim file1 As String
Dim Omraade As String

 
' converting text to numbers
Range("D:D,M:S").Select
Range("M1").Activate
Selection.NumberFormat = "0"

' User selects the correct array to convert
'file1 = InputBox(myPrompt, "FIL NAME")


Application.ScreenUpdating = False

On Error GoTo EndMacro:
FNum = FreeFile
Sep = "|"



' NOTE TO SELF.... insert FILE1 in FNAME

FName = ThisWorkbook.Path & "MACRO MACRO.csv"
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(FName) Then
Kill FName
End If

Omraade = InputBox("Indtast området således ( A1:C3 )", "Område")
If Omraade = "" Then Exit Sub
Range(Omraade).Select


'Range(range1).Select

With Selection
StartRow = .Cells(1).Row
StartCol = .Cells(1).Column
EndRow = .Cells(.Cells.Count).Row
EndCol = .Cells(.Cells.Count).Column
End With

Open FName For Output Access Write As #FNum

For RowNdx = StartRow To EndRow
WholeLine = ""
For ColNdx = StartCol To EndCol
If Cells(RowNdx, ColNdx).Value = "" Then
CellValue = ""
Else
CellValue = _
Application.WorksheetFunction.Text _
(Cells(RowNdx, ColNdx).Value, _
Cells(RowNdx, ColNdx).NumberFormat)

End If
WholeLine = WholeLine & CellValue & Sep
Next ColNdx
WholeLine = Left(WholeLine, Len(WholeLine) - Len(Sep))
Print #FNum, WholeLine
Next RowNdx


EndMacro:
On Error GoTo 0

Application.ScreenUpdating = True

Close #FNum
End Sub
Avatar billede kabbak Professor
05. april 2008 - 00:33 #11
skal områderne under hinanden, eller ved siden af hinanden ??
Avatar billede gimmer Nybegynder
05. april 2008 - 07:36 #12
De ligger under... eksempelvis a1:k9,a2:aw310,a311;k311,a312:aw400
vh Lars
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester