Excel Power Query с VBA - текстовые данные с новым листом для каждого данные - PullRequest
1 голос
/ 16 апреля 2020

Мне нужна помощь с Excel VBA. Я хочу импортировать некоторые текстовые файлы в свои листы Excel и автоматизировать это с помощью VBA, потому что у меня много данных для импорта, и это сэкономит мне время.

Все текстовые файлы построены одинаково. Я хочу импортировать один на лист, затем создать новый лист и импортировать следующий файл на новом листе. Этот процесс должен go продолжаться до тех пор, пока все данные не станут важными. Таким образом, каждый текстовый файл нуждается в новом листе Excel. И все это должно работать автоматически с VBA. Я просто хочу запустить макро, а затем он делает свою работу. Проблема в том, что я не могу создать такой код VBA. Но я попробовал.

Вот что у меня уже есть:

Sub A()
   With Application.FileDialog(msoFileDialogOpen)
      If .Show Then Sheets.Add , Sheets(Sheets.Count), , .SelectedItems(1)
    End With
End Sub

Sub B()

With Application.FileDialog(msoFileDialogFilePicker)

    .AllowMultiSelect = True

    .InitialFileName = "C:\Users\Thoma\Desktop\Test\*.txt"

    If .Show Then

        For Each f In .SelectedItems

            Sheets.Add , Sheets(Sheets.Count), , f

        Next f

    End If

End With

End Sub

Этот код открывает проводник Windows и затем вы можете выбрать несколько текстовых файлов. Затем он загрузит каждый файл в новый лист Excel. Проблема в том, что он не использует Power Query, поэтому нет подключения к данным для файлов в папке, и я не могу обновить sh их. Также он импортирует все данные в первый столбец, что не очень хорошо, потому что он должен быть в отдельных столбцах.

Также у меня есть этот код:

Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveWorkbook.Queries.Add Name:="aacg us", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Quelle = Csv.Document(File.Contents(""C:\Users\Thoma\Downloads\Neuer Ordner\aacg.us.txt""),[Delimiter="","", Columns=10, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""Höher gestufte Header"" = Table.PromoteHeaders(Quelle, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & "    #""Analysierte JSON"" = Table.TransformColumns(#""Höher gestufte Header"",{{""<OPEN>"", Json.Docum" & _
        "ent}, {""<HIGH>"", Json.Document}, {""<LOW>"", Json.Document}, {""<CLOSE>"", Json.Document}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Analysierte JSON"""
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""aacg us"";Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [aacg us]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "aacg_us"
        .Refresh BackgroundQuery:=False
    End With
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets.Add After:=ActiveSheet
End Sub

Я создал этот с Макро рекордер. Он открывает один файл с именем accg.us и создает таблицу Power Query. После этого он добавит новый лист. Проблема с этим в том, что он будет загружать только файл accg.us, а не всю папку.

Так что мне нужно как-то комбинировать стенд, и я не знаю, как.

Вот некоторые примеры данных: https://drive.google.com/drive/folders/1hMPO9LbZwBV4pEdeyCv2Cbwp6Sr8vHM6

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