如何将VBA转换为Google Apps脚本?

时间:2014-09-16 19:42:45

标签: vba google-apps-script google-sheets

我的公司正在从Microsoft Office切换到Google Docs,我有这个(几个)代码我想在Google Spreadsheets中使用,但我不知道如何做到这一点。

考虑这个代码示例:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E:J")) Is Nothing Then
        Cells(Target.Row, 1) = MonthName(Month(Date))
        Cells(Target.Row, 2) = Format(Now, "mm/dd/yyyy")
    End If
End Sub

5 个答案:

答案 0 :(得分:5)

如果您想从VBA转换为GAS,您必须查看一个网站http://ramblings.mcpher.com/

如果该网站没有帮助,我猜您遇到了大麻烦!

答案 1 :(得分:1)

该功能的结构如下:

Private Sub Worksheet_Change(ByVal Target As Range)
  Statements here
End Sub

这可能会转换为:

function Worksheet_Change(ByVal) {
  Statements Here;
};

而不是End Sub JavaScript中的函数以大括号}结尾。

而不是End If,If,then语句也以大括号}结尾。

if (condition) {code here;}

这是JavaScript If 语句的语法。 JavaScript中没有Then关键字。

答案 2 :(得分:1)

使用GSpread.NET。使用Microsoft Excel API处理Google Spreadsheets。 您无需重写所有代码,只需将CreateObject(Excel.Application)替换为CreateObject(GSpreadCOM.Application)。

examples

答案 3 :(得分:1)

2020 年,Google 发布了 Macro Converter 插件,可自动将 VBA 转换为 Apps 脚本。

注意:

  • 只有企业用户可以访问此插件。
  • 某些 API 无法自动转换(例如对文件系统的操作)。您必须手动重写它们。

答案 4 :(得分:0)

目前在谷歌应用脚​​本中这是不可能的,因为电子表格服务中既没有工作表选择更改事件也没有选择更改事件。 Google电子表格活动列表为Here

但是我们在GAS中有time driven triggers,通过这个你可以在某个特定的时间运行一个函数。在你的情况下,让我们说早上12点。您必须编写一个函数,该函数将在上午12点运行以遍历所有工作表,然后将Cell(Target.Row,1)和Cells(Target.Row,2)格式化为您喜欢的格式。

当然,您必须重新构建当前的电子表格...欢迎使用Google App Scripting。