2015-08-12 3 views
0

Есть ли способ разбора строк данных из TXT-файла с использованием нескольких разделителей? В частности, я импортирую файл .txt с использованием VBA и QueryTables и метода .TextFileOtherDelimiter. Но у моего файла есть разные делимитеры (например:: «&« = »), которые я хочу разделить в одном прохождении.Разбор txt-файла в Excel с несколькими разделителями

Кроме того, есть ли способ проанализировать данные с использованием более чем одного символа, такого как «.-» или «: (tab)»?

Я повторяю через кучу файлов в нескольких каталогах. Вот код, я использую:

For Each File In Folder.Files 
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" _ 
      & File, Destination:=Range("A1")) 
      .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 = DataStartRow 
      .TextFileParseType = xlDelimited 
      .TextFileTextQualifier = xlTextQualifierDoubleQuote 
      .TextFileConsecutiveDelimiter = True 
      .TextFileTabDelimiter = False 
      .TextFileSemicolonDelimiter = False 
      .TextFileCommaDelimiter = False 
      .TextFileSpaceDelimiter = False 
      .TextFileOtherDelimiter = TestDataDelimiter 
      .TextFileColumnDataTypes = Array(1, 1, 1) 
      .TextFileTrailingMinusNumbers = True 
      .Refresh BackgroundQuery:=False 
     End With 
next 

Так может мой TestDataDelimiter быть что-то, кроме одного гольца?

ответ

1

Прочитайте файл в строке. Затем преобразуйте несколько разделителей в один разделитель, используя Заменить(). Затем используйте Split() на общем разделителе.

РЕДАКТИРОВАТЬ # 1:

Ниже приведен пример кода для иллюстрации. Скажем, мы хотим проанализировать, используя как + и -

с данными, такими как:

hello+world-goodby+for-now 
12+34+qwerty-poiunyt 

Этот макрос:

Sub ParseData() 
    Dim FileSpec As String, TextLine As String 
    Dim RowNumber As Long 
    folder = "C:\TestFolder\textfiles" 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set folder = fso.GetFolder(folder) 
    RowNumber = 1 
    Close #1 

    For Each file In folder.Files 
     FileSpec = folder & "\" & file.Name 
     Open FileSpec For Input As #1 
     Do While Not EOF(1) 
      Line Input #1, TextLine 
      TextLine = Replace(TextLine, "+", "-") 
      If InStr(TextLine, "-") = 0 Then 
       Cells(RowNumber, 1) = TextLine 
      Else 
       ary = Split(TextLine, "-") 
       ccol = 1 
       For Each a In ary 
        Cells(RowNumber, ccol) = a 
        ccol = ccol + 1 
       Next a 
      End If 
      RowNumber = RowNumber + 1 
     Loop 
     Close #1 
    Next file 
End Sub 

будет производить:

enter image description here

+0

Я добавил свой код на вопрос. Как это будет работать с тем, что у меня есть? Я не думаю, что у меня есть доступ к каждой строке, так как я не уверен, как бы я манипулировал этой частью. – KingKong

+0

@KingKong Смотрите мой ** ИЗМЕНИТЬ # 1 ** –

+0

О, я не знал о некоторых из этих функций. Признайте, что вы показываете мне некоторые новые функции VBA. Это похоже на работу. Благодаря! – KingKong

Смежные вопросы