Ошибка выполнения "5" при импорте в CSV (Excel 2011, Mac)

Я сканировал сайт в поисках решения моей проблемы. Я использую Excel 2011 для Mac OS X 10.10.5.

Моя ситуация такова: у меня есть куча CSV-файлов, которые мне нужно импортировать в Excel для дальнейшего статистического анализа. Вот пример одного из моих CSV-файлов (предоставленных Google Drive). Данные разделяются запятой и должны быть импортированы в ячейку A1 на всех листах (для пояснения я не хочу, чтобы все данные были в A1. Это было бы глупо, не правда ли. Данные CSV должны начинаться здесь, и охватить столбцы A и B, вплоть до номера строки ~1200 или любой другой длины). Лист, в который импортируется данный CSV-файл, должен быть назван в честь CSV-файла (без ".csv"), так как я буду вызывать данные позже, используя имена листов. Использование мастера импорта чрезвычайно утомительно, и с приближением 180 импортов код / ​​макрос VBA очень помог бы, так как это заняло бы у меня 6 очень сфокусированных часов (и мне нравится делать умные вещи в Excel)

В настоящее время у меня есть код, который добавляет новые листы, но он не работает как

(1) Данные не импортируются - я получаю ошибку времени выполнения "5" - неверный вызов процедуры или аргумент.

(2) Листы именуются с расширением типа файла.csv.

Любые идеи относительно того, почему я получаю ошибку после этого:

With ActiveSheet.QueryTables.Add( _
        Connection:="TEXT;" & Fname, _
        Destination:=Range("A1"))l

Текущий код:

Sub CSVIMPORTTEST2()
Dim MyPath As String
Dim MyScript As String
Dim MyFiles As String
Dim MySplit As Variant
Dim N As Long
Dim Fname As String
Dim mybook As Worksheet
On Error Resume Next
MyPath = MacScript("return (path to documents folder) as String")
'Or use MyPath = "Macintosh HD:Users:YourUserName:Desktop:TestFolder:"

MyScript = "set applescript's text item delimiters to (ASCII character 10) " & vbNewLine & _
    "set theFiles to (choose file of type " & _
  " (""public.comma-separated-values-text"") " & _
    "with prompt ""Please select a file or files"" default location alias """ & _
    MyPath & """ multiple selections allowed true) as string" & vbNewLine & _
    "set applescript's text item delimiters to """" " & vbNewLine & _
    "return theFiles"

MyFiles = MacScript(MyScript)
On Error GoTo 0

If MyFiles <> "" Then
With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With
MySplit = Split(MyFiles, Chr(10))
For N = LBound(MySplit) To UBound(MySplit)

    'Get file name only and test if it is open
    Fname = Right(MySplit(N), Len(MySplit(N)) - InStrRev(MySplit(N), _
    Application.PathSeparator, , 1))

        Set mybook = Nothing
            On Error Resume Next
            Set mybook = Sheets.Add(After:=Sheets(Worksheets.Count))
            mybook.Name = Fname
            On Error GoTo 0
     Next

Worksheets(Fname).Activate

With ActiveSheet.QueryTables.Add( _
    Connection:="TEXT;" & Fname, _
    Destination:=Range("A1"))
.Name = "CSV" & Worksheets.Count + 1
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlMacintosh
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
End With

      End If

End Sub

Надеюсь, кто-то там может помочь

С наилучшими пожеланиями Эмиль Хок

1 ответ

Я не знаком с VBA-кодом или параметрами для Excel, которые вы используете, но вы можете проверить несколько вещей:

Во-первых, вы можете сделать отладочную копию имени файла (ов) и имен листов - просто чтобы убедиться (особенно Fname).

Теперь для csv-файла - первые строки выглядят так (не обращайте внимания на специальные символы здесь... - в файле все нормально, UTF-8):

DATE,2015-11-30 08:30:36
SAMPLE RATE,1

BAR 1: Kløe
Range: 0 - 100
Labels: Ingen kløe - null - Værst tænkelige kløe

TIME,VALUE
0,0.0
1,0.0

и параметры:

.FieldNames = True
.TextFileStartRow = 1
.TextFileCommaDelimiter = True

но ваши имена полей начинаются со строки 8, а данные - со строки 9, а вы хотите, чтобы эти данные начинались в ячейке A1. Может быть, вы должны настроить параметры здесь.

Кроме того, вокруг строки 610 есть еще один заголовок:

600,63.0
601,63.0
BAR 2: Smerte
Range: 0 - 100
Labels: Ingen smerte - null - Værst tænkelige smerte

TIME,VALUE
0,0.0
1,0.0

Вы, вероятно, не хотите, чтобы в ваших данных тоже.

Не знаю, что это значит, но выглядит странно, если у вас есть только 2 столбца:

.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
Другие вопросы по тегам