Импорт CSV-файлов в Excel с помощью макроса

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

папка всегда будет находиться в том же месте, и текстовые файлы будут отформатированы DD_MM_YYYY. А там клетки внизу всегда будет пусто

некоторые фотографии, чтобы сделать то, что я прошу проще выяснить.

Result
Data Input Step 1Data Input Step 2Data Input Step 3

6
задан random
07.11.2022 20:01 Количество просмотров материала 2574
Распечатать страницу

1 ответ

это проще, чем вы думаете, потому что вы можете вызвать мастер импорта текста (или, скорее, вы можете использовать его функциональность) из макроса, нет необходимости писать CSV-анализатор или что-нибудь подобное.

на самом деле, все, что я сделал с макросом ниже, чтобы использовать встроенную функцию записи, а затем настроить его немного, чтобы удовлетворить ваши потребности.

использование макроса:

  1. резервное копирование текущего файла Excel, в случае чего сорваться.

  2. изменить определение folder в макросе должен быть путь, содержащий все ваши файлы данных - убедитесь, что вы включили косую черту.

  3. выберите ячейку заголовка столбца, который должны содержит имя одного из ваших файлов - включая расширение файла. Вы можете изменить это поле после загрузки данных, если хотите удалить расширение.

  4. запустить макрос.

действия

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

как таковой, он, вероятно, перезапишет ячейки ниже выбранной ячейки при запуске макроса-внимание осведомленный.

если файл не найден, или происходит какая-либо другая ошибка, это не удастся с обычным полем ошибки VBA, нет дружественных сообщений об ошибках.

Код

некоторые из них, вероятно, могут быть обрезаны - как уже было сказано, я получаю его из записи, а не учусь, как пользователь QueryTables сам - но это не больно, и, кажется, работает надежно.

Sub LoadFromFile()
    Dim fileName As String, folder As String

    folder = "C:\Path\To\Your\Files\"
    fileName = ActiveCell.Value

    ActiveCell.Offset(1, 0).Range("A1").Select

    With ActiveSheet.QueryTables _
        .Add(Connection:="TEXT;" & folder & fileName, Destination:=ActiveCell)
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
5
отвечен DMA57361 2022-11-09 03:49

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх