CSV导入时运行时错误“5”(Excel 2011,Mac)

时间:2015-12-25 19:36:04

标签: excel vba csv excel-vba-mac excel-2011

我一直在抓取网站以解决我的问题。我使用Excel 2011 for Mac OS X 10.10.5。

我的情况是这样的: 我有一堆CSV文件需要导入Excel进行进一步的统计分析。以下是我的一个CSV文件example(与Google驱动器共享)。 数据以逗号分隔,并且应该导入到所有工作表中的单元格A1(为了澄清,我不希望在A1中包含所有数据。现在这将是愚蠢的,不是吗.CSV数据应该从这里开始,并且跨越A列和B列,直至行号~1200或任何长度)。导入给定CSV文件的工作表应以CSV文件命名(不带“.csv”),因为稍后我将使用工作表名称调用数据。 使用导入向导是非常繁琐的,并且有180个进口,VBA代码/宏将有很大帮助,因为它需要我非常专注的时间(我喜欢在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

希望有人能够提供帮助

最好的问候Emil Hoeck

1 个答案:

答案 0 :(得分:0)

我不熟悉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)