Хобрук: Ваш путь к мастерству в программировании

Импорт файла с разделителями в Excel с помощью макроса; Ошибка выполнения "1004"

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

Run-time error '1004': Application-defined or object-defined error

Ошибка вызывается следующей строкой:

With ActiveSheet.QueryTables.Add(Connection:=strConnexn, Destination:=Range("$A$1"))

Я видел пример StackOverflow по адресу «Импорт файла с разделителями в Excel с помощью макроса. (.CommandType = 0)"

Строка кода, где мой макрос "subImportIntermediaCSVCallLogs_aaa" задыхается, кажется моему невежественному уму идентичной примеру StackOverflow; но очевидно я ошибаюсь.

Хотя обычно я могу разобраться с vba в ворде, у меня нет опыта кодирования в vba в экселе, и я не знаю где искать объяснение.

После запуска макроса «subImportIntermediaCSVCallLogs_aaa(strCSV_Fullname)» я планирую использовать макрос «subRunMacroOnSeveralCSV_files()» для импорта группы CSV-файлов в одну и ту же электронную таблицу, причем каждый импорт начинается на 4 строки ниже предыдущего импорта. Пожалуйста, дайте мне знать, если вы считаете, что это неразумно.

Любая помощь приветствуется.

Вот мой код:

Sub subImportIntermediaCSVCallLogs_aaa(strCSV_Fullname)
'
    Dim strConnexn As String

    strConnexn = Chr(34) & "TEXT;" & strCSV_Fullname & Chr(34)
    MsgBox strConnexn

    Application.CutCopyMode = False
    With ActiveSheet.QueryTables.Add(Connection:=strConnexn, Destination:=Range("$A$1"))
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = False
        .PreserveFormatting = True       
        .FieldNames = True
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileParseType = xlDelimited
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Range("A1,1:1048576").Select
    Columns("A:A").EntireColumn.AutoFit
    Columns("B:B").EntireColumn.AutoFit
    ActiveCell.SpecialCells(xlLastCell).Select

    ActiveSheet.Cells(ActiveSheet.Rows.Count, Selection.Column).End(xlUp).Select
    ActiveCell.Offset(4, 0).Select

End Sub ' End of subImportIntermediaCSVCallLogs_aaa(strCSV_Fullname)


Sub subRunMacroOnSeveralCSV_files()
    Dim strCSV_Fullname As String
    strCSV_Fullname = "E:\Intermedia\CallHistory\callhistory01.csv"
    strCSV_Fullname = "E:\Intermedia\CallHistory\callhistory02.csv"
    strCSV_Fullname = "E:\Intermedia\CallHistory\callhistory03.csv"
    subImportIntermediaCSVCallLogs_aaa strCSV_Fullname

End Sub ' End of subRunMacroOnSeveralCSV_files()
01.11.2019

  • Я не уверен, как был создан этот код. Когда я записываю макрос и иду в Данные -> Получить и преобразовать данные -> Из текста/CSV, сгенерированный код отличается от вашего. Почему бы вам просто не открыть CSV, а не добавлять таблицу запросов? 01.11.2019
  • У меня есть около 16 файлов для импорта в виде данных. Одно из полей необходимо импортировать как тип даты (год/м/день). Это занимает довольно много времени, и я склонен что-то упускать или иным образом портить, когда делаю это вручную для 16 файлов. Я хочу иметь возможность регулярно получать эту информацию в режиме реального времени, просто нажимая кнопку. 05.11.2019
  • Вот как вы открываете csv: Workbooks.Open Filename:="C:\test.csv" 05.11.2019

Новые материалы

Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

«Очень простой» эволюционный подход к обучению с подкреплением
В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..