這幾個月跟着王佩豐老師在B站的教程學了VBA,真是上頭啊,比追番還有意思,我跟着寫了一大堆亂七八糟的代碼,解決了些工作上的問題。本來還打算給別人用,但是用mac上的excel打開就提示有功能無法使用。當時學藝不精,也忙,就直接放棄了mac。昨天,想了解下到底mac能不能用vba,發現雖然問題多,但是解決辦法不是沒有的。記錄下:
- Mac Excel是從2016之后才開始功能缺失的,2011支持很完整,官方描述是。
Unlike other versions of Office apps that support VBA, Office 2016 for Mac apps are sandboxed.
Sandboxing restricts the apps from accessing resources outside the app container. This affects any add-ins or macros that involve file access or communication across processes. You can minimize the effects of sandboxing by using the new commands described in the following section.
- 2016中要購買365服務才能打開開發者工具,雖然打不開,但是其實是能使用宏的,也能打開visual basic,所以最大的問題是控件沒法按鍵插入了。解決辦法是把按鈕直接添加到工具欄。2016是支持自定義工具欄的,只是現在還不會。
- 2016里面窗體不見了。。。徹底不能添加了,但是可以導入文件的方式把別的窗體導入。導入之后可以使用,也可以編輯代碼,但是對窗體本身不能直接編輯。
- 在Mac里面不能運行Windows下面的DLL,在Mac里面動態鏈接庫叫做.dylib,在 .framework里面,這個問題對我來說已經超綱。簡單搜索得出的結論是,在Mac里面不能直接調用動態鏈接庫里面的工具。
- Windows用Shell()函數來運行批處理文件,調用其他程序,Mac用AppleScript()函數調用,但是2016之后這個功能多限制,官方說被棄用,推薦使用AppleScriptTask(),對代碼存放位置,對可以傳遞的canshu 給出了限制。
def
- DLL :動態鏈接庫