Сортировать текстовые данные без разделителя - PullRequest
0 голосов
/ 14 января 2019

Я должен сделать следующее в Excel. У меня есть несколько текстовых файлов одного формата: (см. Ниже)


- Samplefile 
- 1)Step 1
- XYZ
- 2)Step 2
- ABC
- 3)Step 3
- ABC1

- Name: Samplefile2
- 1)Step 1
- XYZ2
- 2)Step 2
- ABC2
- 3)Step 3
- DEF2

Я хотел написать код для импорта всех файлов и дать мне окончательный вывод, как показано ниже в разных столбцах Excel

 1. Name         Step1  Step2  Step3
 3.  Samplefile   XYZ    ABC    ABC1
 4.  Samplefile2  XYZ2   ABC2   DEF2

1 Ответ

0 голосов
/ 15 января 2019

Я получил некоторый прогресс в этом. Я могу импортировать файлы и разделить их.

Для моего следующего шага мне потребовалась некоторая помощь в изменении этого кода, чтобы я мог изменить лист, в который я импортирую файлы рецептов, на лист 1, лист 2 и т. Д. Вместо текстового файла namme?

См. Код ниже:

Sub CombineTextFiles()
    Dim FilesToOpen
    Dim x As Integer
    Dim wkbAll As Workbook
    Dim wkbTemp As Workbook
    Dim sDelimiter As String

    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    sDelimiter = "|"

    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="Text Files (*.txt), *.txt", _
      MultiSelect:=True, Title:="Text Files to Open")

    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "No Files were selected"
        GoTo ExitHandler
    End If

    x = 1
    Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen(x))
    wkbTemp.Sheets(1).Copy
    Set wkbAll = ActiveWorkbook
    wkbTemp.Close (False)
    wkbAll.Worksheets(x).Columns("A:A").TextToColumns _
      Destination:=Range("A1"), DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, _
      Tab:=False, Semicolon:=False, _
      Comma:=False, Space:=False, _
      Other:=True, OtherChar:="|"

    x = x + 1

    While x <= UBound(FilesToOpen)
        Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen(x))
        With wkbAll
            wkbTemp.Sheets(1).Move After:=.Sheets(.Sheets.Count)
            .Worksheets(x).Columns("A:A").TextToColumns _
              Destination:=Range("A1"), DataType:=xlDelimited, _
              TextQualifier:=xlDoubleQuote, _
              ConsecutiveDelimiter:=False, _
              Tab:=False, Semicolon:=False, _
              Comma:=False, Space:=False, _
              Other:=True, OtherChar:=sDelimiter

        End With
        x = x + 1
    Wend

ExitHandler:
    Application.ScreenUpdating = True
    Set wkbAll = Nothing
    Set wkbTemp = Nothing
    Exit Sub

ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler



End Sub
...