I have a folder with hundreds of text files that I need to parse some lines from. These lines then need to be pasted to an Excel sheet continuing down in order. This is my first attempt at VBA but I managed to pull the text I want from one file and paste it into the Excel sheet but I am stuck at being able to continuously run the macro through the entire folder and continuously add the parsed text lines to the Excel sheet. Sorry if this is rough but it is my first attempt at macro writing
I tried using Application.FileDialog(msoFileDialogFolderPicker) to call the folder that has all my text files in. I then opened the files I wanted with:
MyFile = Dir(MyFolder & "\", vbReadOnly) I then tried a Do Loop to run the macro through each file but it didn't return any value despite completing the macro it just replaced the previously obtained results.
Here is the basic portion of my code:
Sub read() 'PURPOSE: Send All Data From Text File To A String Variable Dim TextFile As Integer Dim FilePath As String Dim FileContent As String Dim MyFolder As String, MyFile As String 'Opens a file dialog box for user to select a folder With Application.FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False .Show MyFolder = .SelectedItems(1) Err.Clear End With 'File Path of Text File MyFile = Dir(MyFolder & "\", vbReadOnly) 'Determine the next file number available for use by the FileOpen function TextFile = FreeFile 'Open the text file Open MyFile For Input As #1 'Store file content inside a variable Do Until EOF(1) Line Input #1, textline Text = Text & textline Loop Close #1 Dim objFSO As Object Dim objFolder As Object Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.getFolder(MyFolder) Dim fls As Object Dim i As Integer i = 1 For Each fls In objFolder.Files 'find required data from txt file starttime = InStr(Text, "+start=") endtime = InStr(Text, "+end=") so = InStr(Text, "+so=") engineer = InStr(Text, "+engineer=") account = InStr(Text, "+account=") incident = InStr(Text, "+number=") machine = InStr(Text, "+machine=") down = InStr(Text, "+down=") nextrow = Cells(Rows.Count, "A").End(xlUp).Row + 1 'label headers for txt data Range("A1").Value = " start time " Range("B1").Value = " end time " Range("C1").Value = " SO " Range("D1").Value = " Total Time " Range("E1").Value = " Engineer " Range("F1").Value = " Account" Range("G1").Value = " Incident" Range("H1").Value = " Machine" Range("I1").Value = " down" 'paste obtained txt data into excel cells Range("A2" & i).Value = Mid(Text, starttime + 7, 16) Range("B2").Value = Mid(Text, endtime + 5, 16) Range("C2").Value = Mid(Text, so + 4, 8) Range("E2").Value = Mid(Text, engineer + 10, 4) Range("F2").Value = Mid(Text, account + 9, 6) Range("G2").Value = Mid(Text, incident + 8, 4) Range("H2").Value = Mid(Text, machine + 9, 4) Range("I2").Value = Mid(Text, down + 6, 9) 'Report Out macro finished MsgBox " Finished " 'Close Text File Close TextFile i = i + 1 Next End Sub This gives me the results I want but I have to go through each individual file which is time consuming. I would rather have it loop though the entire folder pulling the information from each file and adding the pulled text to the Excel sheet continuing down each row. Any help would be greatly appreciated.