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

meerdere tekstbestanden importeren in excel

Status
Niet open voor verdere reacties.
Een CSV bestand is gewoon een tekst bestand, dat staat helemaal los van Excel.
En het is geen enkel probleem om van meerdere tekst bestanden één CSV bestand te maken als je laat zien hoe het uiteindelijke CSV bestand er uit moet zien en welk scheidingsteken moet worden gebruikt.

Dus alle tekst uit het teksbestand moet als 1 regel in veld 2 komen?
En wat moet het scheidingsteken zijn?

Correct, alle tekst uit het tekstbestand moet in één cel worden geplaatst. het scheidingsteken zou volgens mij het beste een TAB kunnen zijn (of zijn er andere scheidingstekens die meer geschikt zijn voor tekstbestanden?)
 
Macro in excel draaien.
Directory aanpassen.
Ik maak gebruik van het door jou geplaatste TXT-bestand.
Als lijstscheidingsteken gebruik ik de komma.
Nog enige andere vragen heb je niet beantwoord.

Code:
Sub M_snb()
   c00 = "G:\OF\"
   c01 = Dir(c00 & "0003.*.txt")
   
   With CreateObject("scripting.filesystemobject")
      .createtextfile(c00 & Replace(c01, ".txt", ".csv"), True).write c01 & "," & .opentextfile(c00 & c01).readall
   End With
End Sub
 
Laatst bewerkt:
Het gaat er niet om wat geschikt is maar wat het systeem die het moet inlezen verwacht.

Dus uitgaande van je voorbeeld tekstbestand, zo?
Code:
0003.1_5580_00017-1.txt	Bataafsche Vrijheid.
0003.1_5580_00017-1.txt	(Geparapheerd)
0003.1_5580_00017-1.txt	(Geparapheerd)
0003.1_5580_00017-1.txt	G: J: G: B
0003.1_5580_00017-1.txt	Samuel Van Hoogstraten
0003.1_5580_00017-1.txt	(onderstond)
 
Laatst bewerkt:
De macro doet het prima, alleen had ik 'm niet in het bericht moeten 'verbeteren':).
Code:
Sub LeesFile()
Dim FileNum As Integer
Dim DataLine As String, sFile As String
Dim sTekst As String, MapNaam As String
    
    With Application.FileDialog(msoFileDialogFilePicker)
''    With Application.FileDialog(3)
        .AllowMultiSelect = False
        .InitialFileName = ActiveWorkbook.Path & Application.PathSeparator
        If .Show <> 0 Then
            sFile = Split(.SelectedItems(1), "\")(UBound(Split(.SelectedItems(1), "\")))
            MapNaam = .SelectedItems(1)
        End If
    End With
    FileNum = FreeFile()
    Open MapNaam For Input As #FileNum
    
    While Not EOF(FileNum)
        Line Input #FileNum, DataLine   'read in data 1 line at a time
        If Not sTekst = "" Then sTekst = sTekst & Chr(10)
        sTekst = sTekst & DataLine
    Wend
    ActiveCell.Value = sFile
    ActiveCell.Offset(0, 1).Value = sTekst
End Sub
 
@Octa

Waarom niet ?

Code:
Sub M_snb()
  c00 = "G:\OF\"
  c01 = Dir(c00 & "0003.*.txt")
   
  Open c00 & c01 For Input As 1
    c02 = Input(LOF(1), 1)
  Close
   
  Open c00 & Replace(c01, ".txt", ".csv") For Output As #1
    Print #1, c01 & "," & c02
  Close
End Sub
 
Een CSV bestand is gewoon een tekst bestand, dat staat helemaal los van Excel.
En het is geen enkel probleem om van meerdere tekst bestanden één CSV bestand te maken als je laat zien hoe het uiteindelijke CSV bestand er uit moet zien en welk scheidingsteken moet worden gebruikt.

Het gaat er niet om wat geschikt is maar wat het systeem die het moet inlezen verwacht.

Dus uitgaande van je voorbeeld tekstbestand, zo?
Code:
0003.1_5580_00017-1.txt	Bataafsche Vrijheid.
0003.1_5580_00017-1.txt	(Geparapheerd)
0003.1_5580_00017-1.txt	(Geparapheerd)
0003.1_5580_00017-1.txt	G: J: G: B
0003.1_5580_00017-1.txt	Samuel Van Hoogstraten
0003.1_5580_00017-1.txt	(onderstond)

Nee, de volledige tekst moet in dit geval op één regel (met een tab gescheiden van bestandsnaam). De volgende regel bevat dan de tweede bestandsnaam met daarachter de tekst van het hele document in één regel
 
En die ene regel dan alle tekst en gescheiden met een spatie?
Zo zie je maar dat een duidelijke uitleg belangrijk is omdat er nogal wat mogelijkheden zijn.
Test eens wat de heren al voor je maakten.
 
Laatst bewerkt:
Een CSV bestand is gewoon een tekst bestand, dat staat helemaal los van Excel.
En het is geen enkel probleem om van meerdere tekst bestanden één CSV bestand te maken als je laat zien hoe het uiteindelijke CSV bestand er uit moet zien en welk scheidingsteken moet worden gebruikt.

De macro doet het prima, alleen had ik 'm niet in het bericht moeten 'verbeteren':).
Code:
Sub LeesFile()
Dim FileNum As Integer
Dim DataLine As String, sFile As String
Dim sTekst As String, MapNaam As String
    
    With Application.FileDialog(msoFileDialogFilePicker)
''    With Application.FileDialog(3)
        .AllowMultiSelect = False
        .InitialFileName = ActiveWorkbook.Path & Application.PathSeparator
        If .Show <> 0 Then
            sFile = Split(.SelectedItems(1), "\")(UBound(Split(.SelectedItems(1), "\")))
            MapNaam = .SelectedItems(1)
        End If
    End With
    FileNum = FreeFile()
    Open MapNaam For Input As #FileNum
    
    While Not EOF(FileNum)
        Line Input #FileNum, DataLine   'read in data 1 line at a time
        If Not sTekst = "" Then sTekst = sTekst & Chr(10)
        sTekst = sTekst & DataLine
    Wend
    ActiveCell.Value = sFile
    ActiveCell.Offset(0, 1).Value = sTekst
End Sub

Super! De macro werkt, alleen per bestand. Is het ook mogelijk om alle bestanden in de map te selecteren en die opeenvolgend te importeren in Excel?
 
Een CSV bestand is gewoon een tekst bestand, dat staat helemaal los van Excel.
En het is geen enkel probleem om van meerdere tekst bestanden één CSV bestand te maken als je laat zien hoe het uiteindelijke CSV bestand er uit moet zien en welk scheidingsteken moet worden gebruikt.

Macro in excel draaien.
Directory aanpassen.
Ik maak gebruik van het door jou geplaatste TXT-bestand.
Als lijstscheidingsteken gebruik ik de komma.
Nog enige andere vragen heb je niet beantwoord.

Code:
Sub M_snb()
   c00 = "G:\OF\"
   c01 = Dir(c00 & "0003.*.txt")
   
   With CreateObject("scripting.filesystemobject")
      .createtextfile(c00 & Replace(c01, ".txt", ".csv"), True).write c01 & "," & .opentextfile(c00 & c01).readall
   End With
End Sub

Hallo SNB, ik raak het overzicht in deze thread kwijt, sorry als ik vragen nog niet beantwoord heb.
Ik heb jouw macro toegepast en de mappenstructuur aangepast, maar krijg de melding : Fout 70 toegang geweigerd
Foutopsporing: .createtextfile(c00 & Replace(c01, ".txt", ".csv"), True).write c01 & "," & .opentextfile(c00 & c01).readall
 
Dan heb je het tekstbestand nog ergens open staan: kladblok, Excel bijv. Sluit die eerst.
 
Dan heb je het tekstbestand nog ergens open staan: kladblok, Excel bijv. Sluit die eerst.

Ik heb alle bestanden afgesloten. Excelbestand opnieuw geopend en Macro gedraaid, maar helaas met dezelfde melding.
 
Super! De macro werkt, alleen per bestand. Is het ook mogelijk om alle bestanden in de map te selecteren en die opeenvolgend te importeren in Excel?
Dat kan, als je stopt met complete berichten te quooten, ik krijg nu al een muisarm van het scrollen :).

Je kunt een folder uitlezen (met msoFileDialogFolderPicker) en met DIR die map uitlezen. Als je daar een loop van maakt, kun je elk bestand inlezen dat aan de criteria voldoet (.csv denk ik dan) en vervolgens verwerken.
 
Octafish, wat je in je macro hebt staan werkt, maar ik zou de werking in dezelfde macro willen herhalen voor het volgende bestand net zolang tot alle bestanden in de betreffende map zijn ingelezen.
 
Als je de directory aanpast heb je hieraan genoeg.

Code:
Sub M_snb()
   c00 = "G:\OF\"
   c01 = Dir(c00 & "*.txt")
   
   With CreateObject("scripting.filesystemobject")
     do until c01=""
       c02=c02 & vbcrlf & c01 & vbtab & .opentextfile(c00 & c01).readall
       c01=Dir
     loop

     if c02<>"" then .createtextfile(c00 & "alles.txt").write mid(c02,3)
   End With
End Sub
 
Laatst bewerkt:
snb

Ik krijg een andere foutmelding: fout 62 invoer na einde van bestand :(
 
Test de code in #35 in de VBEditor met F8: stap voor stap.
Als de directory geen txt-bestanden bevat gaat het natuurlijk mis. (code daarop aangepast)

Of gebruik deze bijlage
 

Bijlagen

  • __alles_snb.xlsb
    12,4 KB · Weergaven: 16
Laatst bewerkt:
Nog een optie. Selecteer zelf je gewenste textfiles en ze worden weggezet in Excel.

Code:
Sub jjv()
    With Application.FileDialog(msoFileDialogFilePicker)
      .AllowMultiSelect = True
       If .Show Then
         ReDim ar(.SelectedItems.Count, 1)
           For Each fl In .SelectedItems
              ar(j, 0) = Split(fl, "\")(UBound(Split(fl, "\")))
              ar(j, 1) = CreateObject("scripting.filesystemobject").opentextfile(fl).readall
              j = j + 1
           Next
       End If
    End With
    Sheets(1).Cells(2, 6).Resize(j, 2) = ar
End Sub

Of door alleen de betreffende map te selecteren


Code:
Sub jvrr()
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
          jv = .SelectedItems(1)
            With CreateObject("scripting.filesystemobject")
             Set sfolder = .getfolder(jv)
               ReDim ar(sfolder.Files.Count, 1)
                 For Each fl In sfolder.Files
                   ar(j, 0) = Replace(Split(fl, "\")(UBound(Split(fl, "\"))), ".txt", "")
                   ar(j, 1) = .opentextfile(fl).readall
                   j = j + 1
                 Next
            End With
        End If
     End With
    Sheets(1).Cells(2, 6).Resize(j, 2) = ar
End Sub
 
Laatst bewerkt:
Ik heb nog geen antwoord op #23 gezien.
Hoe moet het uiteindelijke CSV eruit zien.
Zo?
Code:
0003.1_5580_00017-1.txt	Bataafsche Vrijheid.
0003.1_5580_00017-1.txt	(Geparapheerd)
0003.1_5580_00017-1.txt	(Geparapheerd)
0003.1_5580_00017-1.txt	G: J: G: B
0003.1_5580_00017-1.txt	Samuel Van Hoogstraten
0003.1_5580_00017-1.txt	(onderstond)

Of zo?
Code:
0003.1_5580_00017-1.txt	Bataafsche Vrijheid. (Geparapheerd) (Geparapheerd) G: J: G: B Samuel Van Hoogstraten (onderstond)
 
@EdM

Antwoord op jouw vraag:

Nee, de volledige tekst moet in dit geval op één regel (met een tab gescheiden van bestandsnaam). De volgende regel bevat dan de tweede bestandsnaam met daarachter de tekst van het hele document in één regel

Het gebruik van het woord 'regel' is verwarrend.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan