将 VBA 代码转换为 Apps 脚本时可能会遇到的常见问题 适用于宏转换器的处理记录在下面列出。
打印
用于打印文件的 VBA API 会自动转换为 Apps 脚本,但 行为与原始 VBA API 不同。以下是两个示例:
VBA API | Apps 脚本中的行为 |
---|---|
PrintOut | 转换为 Apps 脚本,但转换为 Apps 脚本 API 会通过文件而非打印机进行打印。您可以手动打印 PDF 文件 文件。 |
PrintToFile | 转换为 Apps 脚本。系统会将 PDF 文件保存在您的 “我的云端硬盘”文件夹。 |
未转换的项
宏转换器不会转换以下功能, 手动转换:
触发器
两种类型的触发器 - 键盘快捷键和一些基于事件的触发器 由宏转换器转换的文件在许多情况下 。
键盘快捷键
要添加键盘快捷键,请按照将函数导入为 宏。
基于事件的触发器
VBA 代码中的某些事件(如 BeforeClose
或 BeforeSave
)
等效方法,但您可以创建解决方法。
对于 BeforeClose
等事件,您可以创建自定义菜单或按钮来点击
在关闭电子表格之前需要执行的操作。
由于 Google 表格会自动保存每次编辑,因此针对类似事件
BeforeSave
不可行。
用户表单
在 VBA 中,UserForm 是应用用户中的窗口或对话框。UserForm 。宏转换器不会转换用户表单。您可以手动 使用 Apps 脚本创建。
创建用户表单对话框
- 在计算机上,使用以下方法打开转换后的文件: Google 表格。
- 点击顶部的扩展程序 > ** Apps 脚本**。
- 在编辑器左侧的“文件”旁边点击“添加文件”图标 >HTML。我们建议您为 HTML 文件指定与 原始 VBA 用户表单。
- 添加要在表单中显示的字段和信息。了解详情 W3school.com 介绍了 HTML 表单。
- 在左侧,点击包含转换后的 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 表示法。使用与原来名称相同的名称 范围,以便转换后的代码能够识别该范围。 |
范围列表 | Google 表格不支持。我们没有 解决方法。 |