Импорт текстового файла Excel VBA пуст - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь импортировать 800+ текстовых файлов в их собственные таблицы в пределах одной и той же книги.Код для этого ниже:

Public Sub dImport()
nFile = Dir("R:\O21DIR\*.txt")

Do While nFile <> vbNullString

Set ws3 = Sheets.Add(After:=Sheets(Sheets.Count))
Application.CutCopyMode = False

With ws3.QueryTables.Add(Connection:="TEXT;" & nFile, Destination:=Range("$A$1"))
    .Name = nFile
    .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 = xlFixedWidth
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 9, 9, 2, 9, 2, 9, 9, 9)
    .TextFileFixedColumnWidths = Array(21, 16, 10, 13, 17, 3, 14, 7, 5, 12, 5, 6)
    .TextFileTrailingMinusNumbers = True
End With

ws3.Name = nFile
For cnt = ActiveWorkbook.Connections.Count To 1 Step -1
    ActiveWorkbook.Connections.Item(cnt).Delete
Next
For cnt = ActiveWorkbook.Queries.Count To 1 Step -1
    ActiveWorkbook.Queries.Item(cnt).Delete
Next
nFile = Dir
fRefine
Loop
End Sub

Я не получаю ошибок, но я также ничего не получаю на листе.Рабочий лист создан и назван правильно.И текстовый файл имеет данные в нем.Код импорта данных был извлечен из записи макроса, поэтому он ДЕЙСТВИТЕЛЬНО работал в одной точке.

Я действительно удалил .Refresh BackgroundQuery:=False, потому что получал ошибку 1004.

Чего мне не хватает/ не так?

Использование Excel 2016 в Office 365 32-bit.Я пробовал это на 2 разных системах с одинаковой настройкой программного обеспечения.Те же результаты.

1 Ответ

0 голосов
/ 20 декабря 2018

Я не эксперт в предметной области, но, посмотрев документацию , я думаю, вы должны добавить куда-нибудь Refresh.

Вставлено сверху страницы:

Set shFirstQtr = Workbooks(1).Worksheets(1) 
Set qtQtrResults = shFirstQtr.QueryTables.Add( _ 
    Connection := "TEXT;C:\My Documents\19980331.txt", 
    Destination := shFirstQtr.Cells(1,1)) 
With qtQtrResults 
    .TextFileParsingType = xlFixedWidth 
    .TextFileFixedColumnWidths := Array(5,4) 
    .TextFileColumnDataTypes := _ 
        Array(xlTextFormat, xlSkipColumn, xlGeneralFormat) 
    .Refresh 
End With
...