我希望用Excel 16在MAC 10.10上使用VBA从一个小宏打开一个简单的工作簿,但是我无法做到。
这是我的宏:
Sub Test()
Call Workbooks.Open("Classeur1.xlsm")
End Sub
在Office 11中,这个功能可以正常工作,但在Office 16中,我遇到了一个错误:
运行时错误'1004':
应用程序定义或对象定义的错误
请问你有任何修复它的想法吗?
wbName = "FILENAME"
If CInt(Split(Application.Version, ".")(0)) >= 15 Then 'excel 2016 support
wbName = Replace(wbName, ":", "/")
wbName = Replace(wbName, "Macintosh HD", "", Count:=1)
End If
检查Excel的版本,然后相应地替换字符。我不确定为什么,但我在macOS上使用的Excel 2016版本是15.xx。
问题在于Excel 2016 for Mac有一个奇怪的“默认”目录。我的Excel启动时会进入/Users/xxxxx/Library/Containers/com.microsoft.Excel/Data
,因此您需要完全限定路径到您的工作簿。例如:
Sub Test()
Call Workbooks.Open("/Users/damien/Documents/Classeur1.xlsm")
End Sub
顺便提一下,您不需要使用Call
语句。您可以这样做:
Sub Test()
Workbooks.Open "/Users/damien/Documents/Classeur1.xlsm"
End Sub
我曾经使用 Workbooks.Open 宏在 Excel 2011 上工作,但在 2016 上无法正常工作。通过更改文件路径的格式,我使其正常工作。现在路径分隔符不是冒号而是斜杠。
这在 Excel 2011 中有效:
path:..:file
这在Excel 2016中有效:
path/../file