Импорт данных из CSV в Excel - PullRequest
0 голосов
/ 31 октября 2018

У меня повторяющийся процесс, который включает в себя импорт данных из разных CSV-файлов в Excel

Текущий процесс Импортируйте данные вручную из данных> из текста> выберите нужный файл> выберите разделитель, и у моих данных есть заголовки> выберите запятую разделителя> следующий> конец> Новый лист

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

Спасибо и всего наилучшего

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Это код, который я использовал некоторое время назад.

Dirlocal - путь к файлу .csv

Я бы импортировал данные в рабочую таблицу с именем "ODK"

Dim ws As Worksheet
Dim strText As String

 ' read utf-8 file to strText variable
 With CreateObject("ADODB.Stream")
    .Open
    .Type = 1  ' Private Const adTypeBinary = 1
    .LoadFromFile DirLocal
    .Type = 2  ' Private Const adTypeText = 2
    .Charset = "utf-8"
    strText = .ReadText(-1)  ' Private Const adReadAll = -1
End With
' parse strText data to a sheet
Set ws = Worksheets("ODK")
intRow = 1
Application.DisplayAlerts = False
For Each strLine In Split(strText, Chr(10))
    If strLine <> "" Then
        With ws
            .Cells(intRow, 1) = strLine
            .Cells(intRow, 1).TextToColumns Destination:=Cells(intRow, 1), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=False, Comma:=True, Space:=False, Other:=False
        End With

        intRow = intRow + 1
    End If
Next strLine
Application.DisplayAlerts = True
ReadUTF8CSVToSheet = ws.Name
0 голосов
/ 31 октября 2018

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

Sub Button1_Click()
    Dim s, wb As Workbook
    s = Application.GetOpenFilename("CSV Files (*.csv),*.csv", , "Please select CSV file...")
    If s <> False Then
        Set wb = Workbooks.Open(s)
        MsgBox "Code to Do something here"
        wb.Close False
    Else: MsgBox "Nothing Selected"
    End If



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