I have a text file, I imported it into excel thanks to vba now I would like to remove the first column and the first 9 rows. You think it's possible to do that by rewriting the following code
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fpath & "\" & ffilename, Destination:=Range("$A$1"))
.Name = "text"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = "|"
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
You can add after that statement something to delete the ranges you want
With ActiveSheet
.Columns(1).EntireColumn.Delete 'delete first column
.Rows("1:9").EntireRow.Delete 'delete first 9 rows
End With
I have a macro that I use to import data on a daily basis. If yesterday's import ended at row 100 then today's import will start at row 101.
Column B has unique values and I don't want any duplicates in my data. How can I select only the imported file and remove duplicates in that file?
Sub Import_Data()
Dim Ret
Ret = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If Ret <> False Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Ret, Destination:=Application.InputBox(prompt:="Select Input Cell", Type:=8))
.Name = "Sample"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 1, 2, 2, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
End Sub
I have been following a thread else where that showed me how to use Query Tables in the VBA editor to import a .txt file from a specific path into a worksheet.
The code is as follows:
Sub Sample()
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Sample.txt", Destination:=Range("$A$1") _
)
.Name = "Sample"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
I have tried to modify the code so that instead of having to hardcode the path each time, instead a user is prompted for the path with an InputBox that stores the path as a string in a variable, then that variable is called upon instead of the path.
I keep getting errors regarding the .Refresh BackgroundQuery:=False line.
Here is my modified code below.
Option Explicit
Sub importEXP()
Dim txtloc As String
txtloc = InputBox("Provide path of .txt file to analyze")
With ActiveSheet.QueryTables.Add(Connection:="TEXT;textloc", destination:=Range("$A$1"))
.Name = "Sample"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Any help is appreciated,
Thank You
Change
Connection:="TEXT;textloc"
to
Connection:="TEXT;" & textloc
You need to replace the line:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;textloc", destination:=Range("$A$1"))
With:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & textloc, destination:=Range("$A$1"))
Double quotes in VBA don't expand variables (like you can do in PowerShell and Perl); you have to explicitly concatenate.
You need to change
With ActiveSheet.QueryTables.Add(Connection:="TEXT;textloc", destination:=Range("$A$1"))
to
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & textloc, destination:=Range("$A$1"))
textloc is a variable so it mustn't be placed inside the quotes.
I'm trying to run the following VBA code. It works on the first 2 files but not the third. I have no idea why as the file is there. I checked the path.
Here is the code and the output from debug.print:
Sub readData(folderName As String, fileName As String, worksheetName As String)
Dim connectionLocation As String
connectionLocation = "TEXT;" & folderName & fileName
Debug.Print (connectionLocation)
With Sheets(worksheetName).QueryTables.Add(Connection:=connectionLocation, _
Destination:=Sheets(worksheetName).Range("A1"))
.Name = worksheetName
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlMacintosh
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.Refresh BackgroundQuery:=False
.UseListObject = False
End With
End Sub
TEXT;/Users/gryslik/gamaCode/engineAnalysis/model/temp/enginePortfolio.csv
TEXT;/Users/gryslik/gamaCode/engineAnalysis/model/temp/inflatedData.csv
TEXT;/Users/gryslik/gamaCode/engineAnalysis/model/temp/uninflatedData.csv
By Request, here's the last few lines from uninflatedData.csv:
2025-10-01,6.99845608812112,6.99845608812112,2.37765391176136,0.550630416325757,0.550630416325757,0.91703100026816,0.519412428409091,0.519412428409091,1.00986157034952,1.00986157034952,0.91703100026816,0.91703100026816,0,1.74174518596591,1.74174518596591,2.012878005,1.15193822842105,2.15190176814235,2.15190176814235,2.58594116368453,2.15190176814235,7.40086014228261,7.40086014228261,0.2677056328125,2.6711781271875,2.24673667094063,15.8590859130978,15.8590859130978,15.8590859130978,15.8590859130978,15.8590859130978,0.913960283203125,5.18232955708875,4.35965109450623,4.35965109450623
2025-11-01,6.9685481561206,6.9685481561206,2.36694375900568,0.543571052013889,0.543571052013889,0.908986868686862,0.502098680795455,0.502098680795455,1.00100313552189,1.00100313552189,0.908986868686862,0.908986868686862,0,1.72646671942235,1.72646671942235,1.9982919325,1.13913891477193,2.12799174849632,2.12799174849632,2.55720848408804,2.12799174849632,7.36923253483696,7.36923253483696,0.26274812109375,2.64149837021875,2.2217729301524,15.7976165878532,15.7976165878532,15.7976165878532,15.7976165878532,15.7976165878532,0.903805168945312,5.16325063816739,4.34360089375361,4.34360089375361
2025-12-01,6.93864022412009,6.93864022412009,2.35623360625,0.53651168770202,0.53651168770202,0.900942737105564,0.484784933181818,0.484784933181818,0.992144700694267,0.992144700694267,0.900942737105564,0.900942737105564,0,1.71118825287879,1.71118825287879,1.98370586,1.1263396011228,2.1040817288503,2.1040817288503,2.52847580449154,2.1040817288503,7.3376049273913,7.3376049273913,0.257790609375,2.61181861325,2.19680918936417,15.7361472626087,15.7361472626087,15.7361472626087,15.7361472626087,15.7361472626087,0.8936500546875,5.14417171924604,4.327550693001,4.327550693001
2026-01-01,6.90873229211957,6.90873229211957,2.34552345349432,0.529452323390151,0.529452323390151,0.892898605524266,0.467471185568182,0.467471185568182,0.983286265866639,0.983286265866639,0.892898605524266,0.892898605524266,0,1.69590978633523,1.69590978633523,1.9691197875,1.11354028747368,2.08017170920427,2.08017170920427,2.49974312489505,2.08017170920427,7.30597731994565,7.30597731994565,0.25283309765625,2.58213885628125,2.17184544857594,15.6746779373641,15.6746779373641,15.6746779373641,15.6746779373641,15.6746779373641,0.883494940429687,5.12509280032468,4.31150049224838,4.31150049224838
Please check below code... Here I dont want converted xml code to save in any drive, Instead I want to put the contents of converted file into the next sheet of existing excel.
Sub GenerateXML()
'
' GenerateXML Macro
'
'
Sheets("Sheet2").Select
ActiveWorkbook.XmlMaps("result_Map").Export URL:="D:\temp3.xml"
Sheets.Add After:=Sheets(Sheets.Count)
With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\temp3.xml", Destination:=Range("$A$1"))
.Name = "temp3"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
' Kill "C:\temp.xml"
End Sub
Instead of using XmlMaps.Export method, msdn says the following:
Use the ExportXml method to export the contents of the mapped cells to a String variable.