Пакетный текст в формате Excel с разделителями, используя вопрос VBA - PullRequest
0 голосов
/ 11 февраля 2019

Я пытался конвертировать текстовые файлы в Excel, используя VBA, и нашел этот код в этой сети.Вот как выглядит мой текст:

ABC | 123 | DEF

ZZZ | 233 | YTU

Sub LoopAllFiles()
    Dim sPath As String, sDir As String
    sPath = "C:\work\"
    If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
    sDir = Dir$(sPath & "*.txt", vbNormal)
    Do Until Len(sDir) = 0
        Workbooks.Open (sPath & sDir)
        With ActiveWorkbook
            Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
                :="|", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
            .SaveAs Filename:=Left(.FullName, InStrRev(.FullName, ".")) & "xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
            .Close
        End With
        sDir = Dir$
    Loop
End Sub

После использования кода экспортированный Excel выглядит следующим образом:

ABC 123 DEF (3 отдельные ячейки)

ZZZ | 233 | YTU (1 отдельная ячейка)

У всех есть идеи, почему код преобразует только первую строку и останавливаетсяпотом?

Большое спасибо.

1 Ответ

0 голосов
/ 11 февраля 2019

В этом случае TextToColumns будет работать с выделенным текстом, который по умолчанию представляет собой одну ячейку, но вам нужно, чтобы это был диапазон ячеек импортируемых данных.Попробуйте расширить выделение перед выполнением TextToColumns, например, вставьте следующую строку кода: Selection.CurrentRegion.Select после With ActiveWorkbook

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...