Ошибка выполнения "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)