multiple txt bestanden importeren in excel (in verschillende tabbladen)

Status
Niet open voor verdere reacties.

renew000

Gebruiker
Lid geworden
7 feb 2009
Berichten
151
Beste experts,

Na veel zoeken weet ik op welke manier ik een textdocument kan importeren, maar nu zit ik met het volgende probleem. Ik ben namelijk niet op zoek naar een manier om 1 textbestandje te importeren, maar naar een manier om meerdere tekstbestandjes die in 1 map staan te importeren. Hierbij zou ieder tekstbestand een eigen tabblad moeten krijgen.

Voor de duidelijkheid heb ik een zip-bestand toegevoegd waarbij de mapstructuur is te zien van de map "Info-case1". Hierin staan 4 bestanden opgenomen, namelijk

Case1.nummer1.txt
Case1.nummer2.txt
Case1.nummer3.txt
totaaloverzicht.txt

Hetgeen ik graag wil is dat excel de bestanden Case1.nummer1.txt, Case1.nummer2.txt
en Case1.nummer3.txt importeert, allen in een verschillend tabblad. De tabbladen zouden dan de naam moeten krijgen van de bestandsnaam zonder de voorloop van welk dossier het betreft. Dus in dit geval 3 tabbladen met de namen; nummer1, nummer2 en nummer3.

Verder zou ik willen dat het excelbestand op een specifieke locatie onder (in dit specifieke geval) de naam "Case1" wordt weggeschreven.

Het allermooiste zou zijn als je in excel door middel van een zoekknop kunt zoeken naar de map met textbestandjes die je wilt omzetten naar excel, maar goed dat is wellicht iets voor mezelf om nog eerst te gaan uitzoeken.

Het wegschrijven van 1 textbestand lukt mij dus prima, maar hoe het multiple wegschrijven werkt ben ik nog niet geheel achter. Voor het visueel maken van het eindresultaat heb ik ook nog een excelbestand toegevoegd met het uiteindelijke bestand (tenminste hoe dit eruit zou moeten zien)

Ik weet dat ik veel vraag, maar ik hoop echt dat er iemand is die mij hier bij kan helpen.
 

Bijlagen

Laatst bewerkt:
Mappenstructuur aanpassen Rene.

Code:
Sub hsv()
Application.ScreenUpdating = False
Dim bestandopen As String, nme, mapje As String
 bestandopen = Dir("c:\users\hsv\desktop\txt bestanden\*")
    Do Until bestandopen = ""
      If bestandopen = "" Then Exit Do
      If bestandopen <> "totaaloverzicht.txt" Then
nme = Split(bestandopen, ".")
        ThisWorkbook.Worksheets.Add.Name = nme(1)
      Workbooks.OpenText Filename:="c:\users\hsv\desktop\txt bestanden\" & bestandopen, _
    DataType:=xlDelimited, Space:=True
 ActiveWorkbook.Sheets(1).Cells.Copy ThisWorkbook.ActiveSheet.Cells(1)
ActiveWorkbook.Close False
  bestandopen = Dir
      Else: Exit Do
    End If
 Loop
 mapje = "C:\users\hsv\desktop\alle txt-bestanden"
   If Dir$(mapje, vbDirectory) = vbNullString Then MkDir mapje
  ThisWorkbook.SaveAs mapje & "\" & nme(0) & ".xlsm", 52
End Sub
 
Code:
Sub M_snb()
    sn = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""G:\OF\*.txt"" /b").stdout.readall, vbCrLf)
    
    For j = 0 To UBound(sn)
      With Sheets.Add
         .Name = CreateObject("scripting.filesystemobject").getbasename(sn(j))
         With .QueryTables.Add("TEXT;" & "G:\OF\" & sn(j), .Cells(1))
            .TextFileParseType = xlDelimited
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = True
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = True
            .Refresh False
            End With
      End With
    Next
End Sub
 
Ik heb het geprobeerd met dezelfde insteek @snb, maar hoe kon ik weten van de eerste regelcode . :rolleyes: :thumb:
 
@HSV

T'is niet de eerste keer dat ik deze code suggereer (zie Worksheet,the code cage, ozgrid,VBAExpress,ExcelFox)
 
Hallo SNB en HSV,

Diep onder de indruk, al heb ik over beide oplossingen nog een vraag.

@SNB - Waarschijnlijk is het voor HSV zijn oplossing handiger te vragen, want hoe graag ik ook de code van SNB wil begrijpen... het is echt hogere wiskunde voor me. Of zou je (SNB) wellicht eens aan kunnen geven wat de verschillende stukjes code precies doen. Ben nu al wel aan het proberen erachter te komen door verschillende commando's op te zoeken.

@HSV - De code van jou is voor mij beter te lezen, maar ik ben wel benieuwd of het volgende mogelijk is: Op dit moment gaat het om een specieke locatie (van de map). Dat betekend dat de code voor iedere verschillende map dient te worden aangepast. Het mooiste zou zijn als ik 1 excelbestand met macro's heb dat kan worden gekopieerd en geplakt in iedere gewenste map met textdocumenten.
In mijn beleving zijn er dan 2 oplossingen om de macro te vertellen om welke map het gaat.

  1. Het toevoegen van een knop aan het exceldocument, waarbij er een locatie kan worden gezocht en de map kan worden geselecteerd

  • Aangezien het excelbestand in dezelfde map staat als ook de textdocumenten staan dan kan de locatie worden afgeleidt.

Uiteraard begrijp ik dat in beide gevallen de locatie in een variabe moet worden gedeclareerd. Dit is voor mij ook weer een uitdaging om daar achter te komen. Hopelijk kunnen jullie meedenken :)
 
Laatst bewerkt:
ActiveWorkbook.Path
Die geeft je de huidige folder van je excel workbook in VBA


FileDialog
Die geeft je de "browse" optie, hieronder een voorbeeldje.
Code:
Sub SelectFolder()
    Dim diaFolder As FileDialog

    ' Open the file dialog
    Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
    diaFolder.AllowMultiSelect = False
    diaFolder.Show

    MsgBox diaFolder.SelectedItems(1)

    Set diaFolder = Nothing
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan