Avatar billede HHA Professor
24. november 2022 - 11:18 Der er 6 kommentarer

VBA til at lave CSV fil

Hejsa,

Jeg kæmper med at få denne kode til at makke rette.
Den kommer med nogle mærkelige linjer, den laver laver den første linje, så laver den den næste linje, men i forlængelse kommer der mere på samme linje.
Sådan fortsætter det ned af og med længere og længere linjer.
Den skal som sådan kun tage det fra der er i A2 til O13 området.
Det må være noget med de tællere og måske dette Print #fNum, Left(csvVal, Len(csvVal) - 2)

Hvad er det der går galt og er der en der kan hjælpe her?

Sub GemSomCSV()
   
    Dim myCSVFileName As String
    Dim myWB As Workbook
    Dim rngToSave As Range
    Dim fNum As Integer
    Dim csvVal As String
    Dim firma As String
    firma = Range("R5").Value
   
    Set myWB = ThisWorkbook
    myCSVFileName = myWB.Path & "\" & firma & VBA.Format(VBA.Now, "yyyy-mm-dd hh-mm-ss ") & ".csv"
    csvVal = ""
    fNum = FreeFile
    Set rngToSave = Range("A2:O13")
   
    Open myCSVFileName For Output As #fNum
   
    For i = 2 To rngToSave.Rows.Count
        For j = 2 To rngToSave.Columns.Count
            csvVal = csvVal & rngToSave(j, i).Value & ";"
        Next
        Print #fNum, Left(csvVal, Len(csvVal) - 2)
        'csvVal = ""
    Next
   
    Close #fileNumber
 
End Sub
Avatar billede bak Seniormester
24. november 2022 - 11:52 #1
Er ikke helt sikker på hvad du ønsker, men jeg har vendt din matrix, så den afspejler dit regneark

Sub GemSomCSV()
 
    Dim myCSVFileName As String
    Dim myWB As Workbook
    Dim rngToSave As Range
    Dim fNum As Integer
    Dim csvVal As String
    Dim firma As String
    Dim i As Long, j As Long
    firma = Range("R5").Value
 
    Set myWB = ThisWorkbook
    myCSVFileName = myWB.Path & "\" & firma & VBA.Format(VBA.Now, "yyyy-mm-dd hh-mm-ss ") & ".csv"
    csvVal = ""
    fNum = FreeFile
    Set rngToSave = Range("A2:O13")
 
    Open myCSVFileName For Output As #fNum
 
    For i = 1 To rngToSave.Rows.Count
        For j = 1 To rngToSave.Columns.Count
            csvVal = csvVal & rngToSave(i, j).Value & ";"
        Next
        Print #fNum, Left(csvVal, Len(csvVal) - 1)
        csvVal = ""
    Next
 
    Close #fNum

End Sub
Avatar billede HHA Professor
24. november 2022 - 13:11 #2
Hej bak,

Jeg får en fejlmelding på den.
Syntes dog det er en mærkelig fejl.
Jeg har gemt den under et andet VBA navn, så begge ligger der, så jeg kan skifte mellem den for at teste.

Compile error:
Sub or Function not defined.
Avatar billede HHA Professor
24. november 2022 - 13:45 #3
Den skulle gerne komme med nedenstående resultat i en CSV fil, hvis jeg ikke har tastet noget ind i excel filen (den manglende data mellem ;;).

;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
;;;stk;;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK;0,00;DKK
Avatar billede bak Seniormester
24. november 2022 - 15:32 #4
Fejlen ligger så ikke i selve koden, men et andet sted. Måske i navngivning af den nye kode.
Har du ændret andet end navnet ?
Avatar billede HHA Professor
29. november 2022 - 13:41 #5
Mærkeligt at den bliver ved med at melde den fejl.
Hvis jeg starter helt forfra på et nyt regneark, så virker arket fint med forskellige tilfældige VBA koder.
Så snart jeg bruger den kode du har lavet, så melder den fejl.
Den kode jeg havde øverst, virker også fint.

Nogen der har en ide om hvad det kan være, der fremkalder denne fejl?
Avatar billede HHA Professor
29. november 2022 - 14:33 #6
Har fået den til at virke.
Dog ved at bruge den kode jeg lagde op og så modificere den til bak´s forslag.
Tror det må være noget ved kopieringen fra det vindue bak har lagt den op i, som laver ged i det.

Men nu har jeg lige et problem med at den laver 3 ekstra linjer med ;'er
Hvordan slipper jeg af med dem?

;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;stk;;0;DKK;0;DKK;0;DKK;0;DKK;0;DKK
;;;;;;;;;;;;;;
;;;;;;;;;;;;;;
;;;;;;;;;;;;;;

Eller kan man få den til at lave en row count efter om der er en værdi i kolonne E og så at den selv laver det rigtige antal linjer?
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

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