我一直在抓取网站以解决我的问题。我使用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
答案 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)