При попытке консолидировать TXT-файл в Excel я получаю ошибку времени выполнения 1004
Моя цель - экспортировать TXT-файлы в папку и объединить их в один лист Excel, а также получить имя файла и дату сохранения TXT-файлов в отдельном столбце соответственно.
При попытке объединить текстовые файлы в папке Excel с помощью приведенного ниже кода, я получаю ошибку времени выполнения 1004 в .Refresh BackgroundQuery:=True, почему я получаю ошибку?
Sub test()
Dim wbk As Workbook, wksht As Worksheet
Dim xStrPath As String
Dim xFileDialog As FileDialog
Dim xFile As String
Dim xFiles As New Collection
Dim I As Long
Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
xFileDialog.AllowMultiSelect = False
xFileDialog.Title = "Select a folder"
If xFileDialog.Show = -1 Then
xStrPath = xFileDialog.SelectedItems(1)
End If
If xStrPath = "" Then Exit Sub
If Right(xStrPath, 1) <> "\" Then xStrPath = xStrPath & "\"
xFile = Dir(xStrPath & "*.txt")
If xFile = "" Then
MsgBox "No files found", vbInformation, "eBay"
Exit Sub
End If
Workbooks.Add
Set wbk = ActiveWorkbook
Set wksht = ActiveSheet
Do While xFile <> ""
xFiles.Add xFile, xFile
xFile = Dir()
Loop
If xFiles.Count > 0 Then
For I = 1 To xFiles.Count
'On Error Resume Next
With wksht.QueryTables.Add(Connection:="TEXT;" & xFile, Destination:=Range("$A$1"))
.Name = xFile
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierNone
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=True
End With
Next
End If
End Sub
Есть ли другой простой способ?
1 ответ
Вот исправление спасибо всем за помощь:)
With wksht.QueryTables.Add(Connection:="TEXT;" & xStrPath & xFiles.Item(I), Destination:=Range("$A$1"))
.Name = xFiles.Item(I)