Deze zelfstudie laat zien hoe u inhoud uit tekstbestanden kunt lezen en deze met VBA in werkbladen kunt plakken.
Inhoud van tekstbestand in werkblad lezen
De eenvoudigste manier om de inhoud van een tekstbestand te lezen, is door het naar de cel van een werkblad te kopiëren.
123456789101112 | Sub FSOPasteTextFileContent()Dim FSO als nieuw bestandssysteemobjectStel FSO = CreateObject ("Scripting.FileSystemObject") inSet FileToRead = FSO.OpenTextFile("C:\Test\TestFile.txt", ForReading) 'voeg hier het pad van uw tekstbestand toeTextString = FileToRead.ReadAllBestand Naar Lezen.SluitenThisWorkbook.Sheets(1).Range("A1").Value = TextString 'u kunt het werkblad en de cel specificeren waar de inhoud van het tekstbestand moet worden geplaktEinde sub |
De bovenstaande code gebruikt het FileSystemObject. Om het te gebruiken, moet u een verwijzing naar de VB-script runtime-bibliotheek instellen. Kijk hier voor meer informatie.
Zonder FileSystemObject te gebruiken, kunt u de inhoud van uw tekstbestand plakken met de onderstaande code. Als uw tekstbestand een regelscheidingsteken bevat, wordt het regel voor regel geplakt.
123456789101112 | Sub PasteTextFileContent ()Dim wbExcel als werkmap, wbText als werkmapDim wsExcel als werkbladSet wbExcel = ThisWorkbook 'geef hier aan in welk Excel-bestand de inhoud van het tekstbestand moet worden geplaktStel wsExcel = wbExcel.Sheets(1) in 'specificeer hier welk werkblad u wilt gebruiken'Set wbText = Workbooks.Open("C:\Test\TestFile.txt") 'voeg hier het pad van uw tekstbestand toewbText.Sheets(1).Cells.Copy wsExcel.CellswbText.Close SaveChanges:=FalseEinde sub |
Lees tekstbestand Inhoud regel voor regel, kolom voor kolom
Uw tekstbestand kan meerdere rijen en verschillende elementen in de rijen hebben, gescheiden door komma's, puntkomma's, tabs, spatie, enz. Om de inhoud van het tekstbestand correct te lezen en te plakken, hebt u mogelijk deze onderstaande code nodig:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators()Dim StrLine As StringDim FSO als nieuw bestandssysteemobjectTSO dimmen als objectDim StrLineElements As VariantDim Index zo langDim ik zo langDim scheidingsteken als tekenreeksStel FSO = CreateObject ("Scripting.FileSystemObject") inStel TSO = FSO.OpenTextFile ("C:\Test\TestFile.txt") inDelimiter=", " 'het scheidingsteken dat wordt gebruikt in uw tekstbestandIndex = 1Do While TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split (StrLine, scheidingsteken)Voor i = LBound(StrLineElements) Naar UBound(StrLineElements)Cells(Index, i + 1).Value = StrLineElements(i) 'deze code zal beginnen met het plakken van de inhoud van het tekstbestand vanuit de A1 (Cell(1,1)) cel van het actieve werkbladvolgende iIndex = Index + 1LusTSO.SluitenEinde sub |
Het scheidingsteken dat in uw tekstbestand wordt gebruikt, kan een komma (“,”), een komma met een spatie (“, “), een puntkomma (“;”), een puntkomma met een spatie (“; “), een spatie (“ “), een tab zijn. (verander dan scheidingsteken = vbTab) of in zeldzame gevallen een ander teken.
Tekstbestanden in arrays lezen
Als u de inhoud van uw tekstbestand in een array moet lezen en regel voor regel, kolom voor kolom in uw werkblad moet plakken, heeft u deze onderstaande code nodig:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray()Dim scheidingsteken als tekenreeksDim tekstbestand als geheel getalDim FilePath als stringDim bestandsinhoud als tekenreeksDim LineArray() als stringDim DataArray() als stringDim TempArray() als stringDim rw As Long, col As LongDelimiter = vbTab 'het scheidingsteken dat wordt gebruikt in uw tekstbestandFilePath = "C:\Test\TestFileTab.txt"rw = 1TextFile = FreeFileOpen FilePath voor invoer als tekstbestandBestandsinhoud = Input(LOF(TextFile), TextFile)Tekstbestand sluitenLineArray() = Split(FileContent, vbNewLine) 'wijzig vbNewLine in vbCrLf of vbLf, afhankelijk van het lijnscheidingsteken dat in uw tekstbestand wordt gebruiktVoor x = LBound(LineArray) Naar UBound(LineArray)Als Len(Trim(LineArray(x))) 0 DanTempArray = Split(LineArray(x), scheidingsteken)col = UBound(TempArray)ReDim Preserve DataArray (col, rw)Voor y = LBound(TempArray) Naar UBound(TempArray)DataArray(y, rw) = TempArray(y)Cellen (x + 1, y + 1). Waarde = DataArray (y, rw) 'deze code begint met het plakken van de inhoud van het tekstbestand vanuit de A1 (Cell (1,1)) cel van het actieve werkbladVolgende jaarStop alsrw = rw + 1Volgende xEinde sub |
Regelscheidingstekens in uw tekstbestand kunnen een combinatie van een regelterugloop en regelinvoer (Chr(13)+Chr(10)) of regelinvoer (Chr(10)) zijn. Gebruik dienovereenkomstig vbCrLf of vbLf. Als u het niet zeker weet, gebruikt u vbNewLine om het regelscheidingsteken aan te geven.