本指南列出了使用 Macro Converter 将 Visual Basic for Applications (VBA) 代码转换为 Apps 脚本时可能会遇到的常见问题。
打印文件
用于打印文件的 VBA API 会自动转换为 Apps 脚本,但其行为可能与原始 VBA API 不同。下表列出了两个示例:
| VBA API | 在 Apps 脚本中的行为 |
|---|---|
PrintOut | 转换为 Apps 脚本,但 Apps 脚本 API 会打印到文件,而不是打印机。 手动打印 PDF 文件。 |
PrintToFile | 转换为 Apps 脚本。 PDF 文件会保存在“我的云端硬盘”文件夹中。 |
未转换的项目
以下功能不会由 Macro Converter 转换,需要手动转换:
触发器
有两种类型的触发器(键盘快捷键和某些基于事件的触发器)不会由 Macro Converter 转换。在许多情况下,您可以手动创建这些触发器。
键盘快捷键
如需添加键盘快捷键,请按照将函数导入为宏的步骤操作。
基于事件的触发器
VBA 代码中的某些事件(例如 BeforeClose 或 BeforeSave)在 Apps 脚本中没有对应的事件,但您或许可以创建一种变通方法。
对于 BeforeClose 等事件,您可以创建一个自定义菜单或按钮,以便在关闭电子表格之前点击以执行所需的操作。
无法为 BeforeSave 事件创建变通方法,因为 Google 表格会在您进行更改时自动保存更改。
用户窗体
在 VBA 中, UserForm 是应用界面 (UI) 中的窗口或对话框。Macro Converter 不会转换用户窗体。请在 Apps 脚本中手动创建用户窗体。
创建用户窗体对话框
- 在计算机上,在 Google 表格中打开转换后的文件。
- 在顶部,依次点击扩展程序 > ** Apps 脚本** 。
- 在编辑器左侧的“文件”旁边,依次点击“添加文件”图标 > HTML。我们建议您为 HTML 文件指定与原始 VBA 用户窗体相同的名称。
- 添加您希望在窗体中显示的字段和信息。如需详细了解 HTML 窗体,请访问 W3school.com。
- 在左侧,点击包含转换后的代码的 Apps 脚本文件(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 Google Workspace 插件概览
- 确定 VBA 宏是否兼容
- 将 VBA 宏转换为 Apps 脚本
- 修正转换后的代码中的错误
- 观看 Macro Converter 教程
- 兼容的 VBA API 列表