繁体   English   中英

Mac Excel 2016 VBA - Workbook.open 给出 1004 错误

[英]Mac Excel 2016 VBA - Workbook.open gives 1004 error

我正在尝试获得一个在 Excel 2011 for Mac 中完美运行的宏,以便在 Excel 2016 for mac 中运行。 目标是让用户指定一个文件夹,其中包含 .csv 文件,然后宏循环遍历所有 .csv,打开每个文件以将信息从中复制到另一个工作簿中。

尝试打开用户选择的文件夹中的第一个 .csv 文件时,宏失败,出现 1004 错误,找不到文件。

(旁注:在宏的前面,workbooks.open 与用户选择的文件完美配合)

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

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= 带有 \\ 分隔符的整个路径。
  • filename= 整个路径和文件名,带 : 分隔符。
  • newfilename= 带有 \\ 分隔符的整个路径和文件名。
  • Dir(filename)= 只是文件名。
  • newfolderpath & Dir(filename))= 整个路径和文件名,用 \\ 分隔符。

设置 wb 线给出:

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

找不到。

显然该文件在那里,可以打开并且可以工作。

任何帮助是极大的赞赏。

好吧,我想我找到了答案,或者至少找到了适合我的项目的答案。

我从宏的前面返回 workbooks.open(user-selected FILE),发现它正在将其读取为“/users/Dave/Desktop/csvs/1.csv”。 因此,即使 debug 和 msgbox 返回反斜杠,它也以某种方式想要正斜杠(你说得部分正确,蒂姆)。 此外,它清楚地截断了 Mac 硬盘驱动器的名称,并以用户目录开头。 所以,我只是修改了变量以匹配这种格式,瞧,它起作用了。 对于那些感兴趣的人,这是我最终使用的修改后的代码:

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

感谢所有帮助过的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM