Mac Excel 2016 VBA – Workbook.open提供1004错误

我想获得一个在Excel 2011 for Mac中完美工作的macros,可以在Excel 2016 for mac中使用。 目标是让用户在其中指定一个.csv文件的文件夹,然后macros循环遍历所有的.csvs文件,打开每个文件,将信息从其中复制到另一个工作簿中。

试图打开用户select的文件夹中的第一个.csv文件时,macros失败,出现1004错误,无法find文件。

(注意:早些时候在macros中,workbooks.open与用户select的FILE完美协作)

这个macros是巨大的,所以我做了一个全新的小的来解决这个问题。 这里是更小的testing代码,它具有相同的失败行为:

Sub Test() Dim folderpath As Variant Dim filename As Variant Dim newfilename As Variant Dim wb As Workbook Dim newfolderpath As Variant folderpath = MacScript("choose folder as string") newfolderpath = Replace(folderpath, ":", "\") MsgBox (newfolderpath) filename = MacScript("Choose file as string") newfilename = Replace(filename, ":", "\") MsgBox (filename) MsgBox (newfilename) MsgBox (Dir(filename)) MsgBox (newfolderpath & Dir(filename)) Set wb = Workbooks.Open(newfolderpath & Dir(filename)) End Sub 

所有的msgboxes提供预期值。

  • newfolderpath =带\分隔符的整个path。
  • filename =整个path和文件名:分隔符。
  • newfilename =带\分隔符的整个path和文件名。
  • Dir(文件名)=只是文件名。
  • newfolderpath&Dir(filename))=整个path和文件名用\分隔符。

设置wb行给出:

 Run-time error '1004' 'Hard DRIVE\USERS\DAVE\DESKTOP\CSVS\1.CSV' 

无法find。

显然文件在那里,可以打开和工作。

任何帮助是极大的赞赏。

那么,我想我find了答案,或者至less有一个答案适用于我的项目。

我回到了macros中早期的workbooks.open(用户select的FILE),发现它是以“/users/Dave/Desktop/csvs/1.csv”的forms读取的。 所以,即使debugging和msgbox返回反斜杠,它不知何故想正斜杠(你是部分正确的,蒂姆)。 此外,它显然截断了Mac硬盘的名称,并从用户目录开始。 所以,我只是修改variables来匹配这种格式,瞧,它的工作。 对于那些有兴趣的人,这里是我最终使用的修改后的代码:

 Sub Test() Dim folderpath As Variant Dim newfilename As Variant Dim wb As Workbook Dim newfolderpath As Variant Dim newfp As Variant folderpath = MacScript("choose folder as string") newfolderpath = Replace(folderpath, ":", "/") newfp = Right(newfolderpath, Len(newfolderpath) - InStr(newfolderpath, "/") + 1) newfilename = Dir(newfp) Set wb = Workbooks.Open(newfp & newfilename) Exit Sub 

感谢大家帮助。