我有这个宏来批量导入同一文件夹中包含的excel电子表格100 .txt文件:
Sub QueryImportText()
Dim sPath As String, sName As String
Dim i As Long, qt As QueryTable
With ThisWorkbook
.Worksheets.Add After:= _
.Worksheets(.Worksheets.Count)
End With
ActiveSheet.Name = Format(Now, "yyyymmdd_hhmmss")
sPath = "C:\Users\TxtFiles\"
sName = Dir(sPath & "*.txt")
i = 0
Do While sName <> ""
i = i + 1
Cells(1, i).Value = sName
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & sPath & sName, Destination:=Cells(2, i))
.Name = Left(sName, Len(sName) - 4)
.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 = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
sName = Dir()
For Each qt In ActiveSheet.QueryTables
qt.Delete
Next
Loop
End Sub
每个.txt文件都具有相同的结构: Headers ,ID,日期,createdBy,文本 .
宏正在运行但是:
- 我希望每个文件都在一行(这个宏在列中显示)
这个excel将导出为.csv导入我的joomla网站与MySql
非常感谢你的帮助!
2 回答
我建议使用Arrays来执行整个操作,而不是使用Excel来完成脏工作 . 下面的代码用
1 sec
来处理300个文件LOGIC:
循环遍历包含文本文件的目录
打开文件并将其读入一个数组,然后关闭该文件 .
将结果存储在临时数组中
读取所有数据后,只需将数组输出到Excel Sheet
CODE: (Tried and tested)
非常感谢您提供此信息 . 我只想导入我的数据文件的第4列,因为我必须按如下方式进行位修改