• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Export to CSV with ; as separator

Status
Niet open voor verdere reacties.

mause01

Gebruiker
Lid geworden
19 okt 2012
Berichten
75
Heren,

Ik heb een marco gemaakt waarbij elke cell met value een ";" krijgt.
Nu werkt dit wanneer de cell een waarde heeft.
Enkel wanneer de cel geen waarde heeft, of te wel leeg NULL.
Daar ben ik nog mee aan het testen.
Goed restultaat.:
1234.PNG
Fout zoals het nu is:
1234.PNG
Wanneer er geen waarde is verschuiven de waarde omdat er geen ";" is aan het einde van de rCell.

Code:
Sub Macro_CSV1()
    Dim rCell As Range
    Dim rRow As Range
    Dim sOutput As String
    Dim sFname As String, lFnum As Long
        
    'Open a text file to write
    sFname = "C:\SALTO\sync.csv"
    lFnum = FreeFile
    
    Open sFname For Output As lFnum
    'Loop through the rows'
        'Range("B7:AI5000,B2:AI2").Select
            'Selection.SpecialCells(xlCellTypeVisible).Select
                'For Each rRow In Selection.Rows
                For Each rRow In ActiveSheet.UsedRange.Rows
                'Loop through the cells in the rows'
[COLOR="#FF0000"]For Each rCell In rRow.Cells
                    If Not IsEmpty(rCell) Then
                    sOutput = sOutput & rCell.Value & ";"[/COLOR]
                 [COLOR="#0000CD"]   If IsEmpty(rCell) Then
                    sOutput = sOutput & rCell & ";"
                    End If[/COLOR]
                End If
                Next rCell
                        
                'write to the file and reinitialize the variables'
                Print #lFnum, sOutput
                sOutput = ""
            Next rRow
    'Close the file'
    Close lFnum
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    Application.DisplayAlerts = True
    Kill ("C:\SALTO\sync2.csv")
End Sub

Rood is wat goed werkt en Blauw is wat ik probeer te doen.
Wanneer geen waarde in rCell dan een ";" aan het einde.
 
Waarom gebruik je niet gewoon de SaveAs FileFormat = xlCSV van Excel zelf?
 
Dat had ik ook al geprobeerd.
Dat werkt wel, maar als excel in een taal staat bijvoorbeeld Amerikaans dan worden de ; een comma.
En met deze Marco is het altijd een ;

Aan gezien ik dit voor internationaal maak moet dit echt zeker een ; zijn.
 
Laatst bewerkt:
Ok, dan moet je de controle op IsEmpty weg laten.
 
Als je je document met de code hier plaatst zal ik even voor je kijken.
 
Wat is bedoelde is dat je de rode regels weg moet laten:
Code:
[COLOR="#FF0000"]If Not IsEmpty(rCell) Then[/COLOR]
sOutput = sOutput & rCell.Value & ";"
[COLOR="#FF0000"]End If[/COLOR]

Andere vraag:
Waarom heb je voor iedere macro een aparte module?
Dat is nergens voor nodig.
 
Wat is bedoelde is dat je de rode regels weg moet laten:
Code:
[COLOR="#FF0000"]If Not IsEmpty(rCell) Then[/COLOR]
sOutput = sOutput & rCell.Value & ";"
[COLOR="#FF0000"]End If[/COLOR]

Andere vraag:
Waarom heb je voor iedere macro een aparte module?
Dat is nergens voor nodig.

Oké, vertel hoe kan ik dat verbeteren.
Ik sta open voor suggesties.
 
1 Module is voldoende. Je hebt nu ook een heel aantal lege modules.
Modules zijn bedoeld om gelijksoortige macro's bij elkaar te plaatsen.
 
Ik ga de lege modules verwijderen en kijken hoe ik alles in 1 module kan zetten.
Dat moet ik even uitzoeken. Kan je een voorbeeld geven.
 
Kan je een voorbeeld geven.
Sub ...()

jouw code

End Sub

Sub ...()

jouw code

End Sub

Sub ...()

jouw code

End Sub

Sub ...()

jouw code

End Sub

Sub ...()

jouw code

End Sub

Sub ...()

jouw code

End Sub

Sub ...()

jouw code

End Sub

Sub ...()

jouw code

End Sub

Sub ...()

jouw code

End Sub

:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan