以下列出使用巨集轉換器將 VBA 程式碼轉換為 Apps Script 時可能遇到的常見問題。
列印
會列印檔案的 VBA API 會自動轉換為 Apps Script,但可能會與原始 VBA API 的行為不同。以下提供兩個範例:
VBA API | Apps Script 中的行為 |
---|---|
PrintOut | 轉換為 Apps Script,但 Apps Script API 會將內容列印到檔案,而非列印機。您可以手動列印 PDF 檔案。 |
PrintToFile | 轉換為 Apps Script。PDF 檔案會儲存在「我的雲端硬碟」資料夾中。 |
未轉換的項目
以下功能不會由巨集轉換工具轉換,必須手動轉換:
觸發條件
巨集轉換器不會轉換兩種觸發事件,分別是鍵盤快速鍵,以及部分以事件為準的觸發條件。在許多情況下,您可以手動建立這些觸發條件。
鍵盤快速鍵
如要新增鍵盤快速鍵,請按照匯入函式做為巨集的步驟操作。
以事件為準的觸發條件
VBA 程式碼中的某些事件 (例如 BeforeClose
或 BeforeSave
) 在 Apps Script 中沒有對應項目,但您可以建立因應做法。
針對 BeforeClose
等事件,您可以建立自訂選單或按鈕,藉此執行在關閉試算表前需執行的動作。
由於 Google 試算表會自動儲存每項編輯內容,因此無法使用 BeforeSave
等事件的解決方法。
使用者表單
在 VBA 中,UserForm 是應用程式使用者介面 (UI) 中的視窗或對話方塊。巨集轉換工具不會轉換 UserForm。您可以手動在 Apps Script 中建立這些項目。
建立使用者表單對話方塊
- 使用電腦在 Google 試算表中開啟已轉換的檔案。
- 依序按一下頂端的「擴充功能」>「Apps Script」**。
- 在編輯器左側的「檔案」旁邊,按一下「新增檔案」圖示 > HTML。建議您為 HTML 檔案命名時,使用與原始 VBA UserForm 相同的名稱。
- 新增要在表單中顯示的欄位和資訊。如要進一步瞭解 HTML 表單,請造訪 W3school.com。
- 在左側按一下含有轉換程式碼的 Apps Script 檔案 (GS 檔案)。
- 如果程式碼中已有
onOpen()
觸發事件,請使用下方程式碼進行更新。如果程式碼中沒有onOpen()
觸發事件,請新增下列程式碼。function onOpen() { SpreadsheetApp.getUi() .createMenu('User Form') .addItem('Show Form', 'showForm') .addToUi(); } function showForm() { var html = HtmlService.createHtmlOutputFromFile('userform_module_name') .setWidth(100) .setTitle('Sign-up for Email Updates'); SpreadsheetApp.getUi().showSidebar(html); }
- 將
userform_module_name
替換為您新增的 HTML 檔案名稱。 - 按一下頂端的「儲存專案」圖示 。
- 請改用 Google 試算表,然後重新載入頁面。
- 依序按一下 Google 試算表頂端的「使用者表單」 >「顯示表單」。
已命名範圍
在 Excel 中,命名範圍是指給予單一儲存格或儲存格範圍的名稱。
將 Excel 檔案轉換為 Google 試算表時,系統不會轉換某些類型的命名範圍,因為系統不支援這些範圍。以下提供兩個範例:
不支援的已命名範圍 | 說明 |
---|---|
表格 | Google 試算表不支援此功能,但有解決方法。
如要在 Google 試算表中重新建立這個命名範圍,請新增指向資料表範圍 A1 符號的命名範圍。請使用與 VBA 程式碼中原始命名範圍相同的名稱,以便轉換後的程式碼辨識該名稱。 |
範圍清單 | 不支援 Google 試算表。目前沒有解決方法。 |
相關文章
- Macro Converter 外掛程式總覽
- 判斷 VBA 巨集是否相容
- 將 VBA 巨集轉換成 Apps Script
- 修正轉換後的程式碼中的錯誤
- 觀看 Macro Converter 教學課程
- 相容的 VBA API 清單