我想在MAC 10.10上用Excel 16的VBA從一個小宏中打開一個簡單的工作簿,但是我不能。如何在MAC上使用VBA從Excel 16打開工作簿?
我有我的宏:
Sub Test()
Call Workbooks.Open("Classeur1.xlsm")
End Sub
使用Office 11,此功能工作正常,但我與Office 16的錯誤:
運行時錯誤 '1004':
應用 - 定義或對象定義的錯誤
您有任何想法解決它嗎?
我想在MAC 10.10上用Excel 16的VBA從一個小宏中打開一個簡單的工作簿,但是我不能。如何在MAC上使用VBA從Excel 16打開工作簿?
我有我的宏:
Sub Test()
Call Workbooks.Open("Classeur1.xlsm")
End Sub
使用Office 11,此功能工作正常,但我與Office 16的錯誤:
運行時錯誤 '1004':
應用 - 定義或對象定義的錯誤
您有任何想法解決它嗎?
的問題是Excel的2016年Mac有它的工作原理在一個陌生的「默認」的目錄。礦/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
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