• 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.

komma gescheiden

Status
Niet open voor verdere reacties.

PeterBijns

Gebruiker
Lid geworden
25 nov 2008
Berichten
160
Beste kenners,

Ik heb een Excel bestand met 21 kolommen de inhoud van die kolommen wil ik exporteren naar een txt bestand en de inhoud van de kolommen als komma gescheiden.

Hieronder een voorbeeld:

1,"0","0","0200","kaas","","00702","hard",3,0,"02RT","01","","","OFF","OFF","OFF","OFF","OFF","OFF","0200"
2,"0","0","0201","koek","","00705","zacht",3,0,"02GT","30","","","OFF","OFF","OFF","OFF","OFF","OFF","0201"
3,"0","0","0202","pap","","00704","droog",3,0,"02RT","01","","","OFF","OFF","OFF","OFF","OFF","OFF","0202"

Ik heb van iemand van dit forum een macro gekregen en die werkt op zich perfect alleen niet helemaal goed.
Die macro zet alle kolommen om naar komma gescheiden met de aanhalingstekens ertussen, alleen voor sommige kolommen is dat ongewenst, met name de eerste kolom daar moet alleen een komma komen en voor de 9e en 10e kolom moet ook alleen een komma komen en geen aanhalingstekens, mijn vraag is hoe krijg ik dat voor elkaar?
Er zijn ook een paar kolommen waar geen inhoud in komt voor die kolommen geldt dat ze wel worden omgezet met aanhalingstekens.
Hieronder de macro welke voor alle kolommen aanhalingstekens geeft en het bestand exporteert naar een txt bestand.

Sub ExportTekst()
Dim mRow As Long
Dim mCol As Long
Dim mReg As String
Dim Bst As String

Bst = Environ("D:\inhoud") & ActiveSheet.Name & ".txt"
Open Bst For Output As #1

mRow = ActiveSheet.UsedRange.Rows.Count
mCol = ActiveSheet.UsedRange.Columns.Count

For i = 1 To mRow
For j = 1 To mCol
mReg = mReg & Chr(34) & Cells(i, j) & Chr(34)
If j < mCol Then mReg = mReg & ","
Next j
Print #1, mReg
mReg = ""
Next i
Close #1
End Sub


Alvast bedankt voor een oplossing want ik heb er erg veel werk aan om het txt bestand zo te krijgen dat sommige kolommen niet de aanhalingstekens hebben nadat bovenstaande macro zijn werk heeft gedaan.

Groet, Peter
 
Is dit wat je bedoelt?

Code:
Sub ExportTekst()
Dim mRow As Long
Dim mCol As Long
Dim mReg As String
Dim Bst As String

Bst = Environ("D:\inhoud") & ActiveSheet.Name & ".txt"
Open Bst For Output As #1

mRow = ActiveSheet.UsedRange.Rows.Count
mCol = ActiveSheet.UsedRange.Columns.Count

For i = 1 To mRow
For j = 1 To mCol
    If mCol <> 1 And mCol <> 9 And mCol <> 10 And Cells(i, j) <> "" Then
            mReg = mReg & Chr(34) & Cells(i, j) & Chr(34)
        Else
            mReg = mReg & Cells(i, j)
    End If
If j < mCol Then mReg = mReg & ","
Next j
Print #1, mReg
mReg = ""
Next i
Close #1
End Sub

PS met de codetags maak je jouw post ook wat netter.
 
Laatst bewerkt:
Gebruik svp codetags.

probeer dit eens
Code:
If j = 1 or j = 9 or j = 10 Then mReg = mReg & Cells(i, j) Else mReg = mReg & Chr(34) & Cells(i, j) & Chr(34)
 
Naast je eigen vragen ben ik eigenlijk ook wel benieuwd wat dit doet:
Environ("D:\inhoud")

Uiteraard ken ik de Environ functie maar een environment setting op die manier heb ik nog nooit gezien.
 
Ik heb de macro uitgeprobeerd en het is helaas niet wat ik zoek, het resultaat is dit.

"1","0","0","0200","kaas",,"00702","hard ","3","0","02RT","01",,,"OFF","OFF","OFF","OFF","OFF","OFF","0200"
"2","0","0","0201","koek",,"00705","zacht","3","0","02RT","01",,,"OFF","OFF","OFF","OFF","OFF","OFF","0201"
"3","0","0","0202","pap",,"00704","droog","3","0","02RT","01",,,"OFF","OFF","OFF","OFF","OFF","OFF","0202"

Terwijl het dit moet worden.

1,"0","0","0200","kaas","","00702","hard",3,0,"02RT","01","","","OFF","OFF","OFF","OFF","OFF","OFF", "0200"
2,"0","0","0201","koek","","00705","zacht",3,0,"02GT","30","","","OFF","OFF","OFF","OFF","OFF","OFF" ,"0201"
3,"0","0","0202","pap","","00704","droog",3,0,"02RT","01","","","OFF","OFF","OFF","OFF","OFF","OFF", "0202"

Kolom A moet zonder aanhalingstekens.

kolom F is niet gevuld maar moet wel met aanhalingstekens "",
Dit geldt ook voor de kolommen M en N, deze zijn (nog niet) gevuld maar moeten wel aanhalingstekens krijgen.

Mijn kennis is helaas echt niet toereikend om dit voor elkaar te krijgen en ik dank voor de reacties welke ik nu al heb ontvangen helaas was het resultaat nog niet wat het zijn moet.

Ik heb wel hoop dat een knappe kop dit toch voor elkaar weet te krijgen.

Wederom op voorhand mijn dank .

Groet, PeterBekijk bijlage Inhoud.xlsm
 
Ik kan dat wel voor je maken, zo moeilijk is dat niet. Misschien dat ik er morgenavond tijid voor heb. Iemand anders kan me uiteraard best voor zijn :)

Edit:
Ik zie net dat VenA een juiste aanzet heeft gegeven, al zou ik het zelf iets anders schrijven. Maar als niemand me voor is zal ik het wel voor je doen.
 
Laatst bewerkt:
Omdat je de lege cellen specifiek noemde ing ik er vanuit dat je ze ook zonder aanhalingstekens wilde. Ten onrechte blijkt. \
Bovendien was ik raar in de weer met de kolom variabele. Excuus daarvoor en vandaar deze poging:

De code van VenA moet dus doen wat je wilt:
Als gehele routine ziet dat er zo uit:
Code:
Sub ExportTekst()
Dim mRow As Long
Dim mCol As Long
Dim mReg As String
Dim Bst As String

Bst = Environ("D:\inhoud") & ActiveSheet.Name & ".txt"
Open Bst For Output As #1

mRow = ActiveSheet.UsedRange.Rows.Count
mCol = ActiveSheet.UsedRange.Columns.Count

For i = 1 To mRow
For j = 1 To mCol
       If j = 1 or j = 9 or j = 10 Then 
                  mReg = mReg & Cells(i, j) 
           Else 
                  mReg = mReg & Chr(34) & Cells(i, j) & Chr(34)
       End If
If j < mCol Then mReg = mReg & ","
Next j
Print #1, mReg
mReg = ""
Next i
Close #1
End Sub
 
Toch ben ik nog steeds benieuwd naar het nut van Environ("D:\inhoud")
Want naar mijn mening levert dat altijd een lege string op.
 
Het werkt nu perfect en ik wil je bedanken voor je inzet, mijn kennis is nihil op dit gebied en zonder hulp was ik er niet gekomen.

Allemaal bedankt voor de bijdrage aan mijn probleem.

Groet, Peter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan