【问题标题】:How to convert VBA to Google Apps Script?如何将 VBA 转换为 Google Apps 脚本?
【发布时间】:2014-09-16 19:42:44
【问题描述】:

我的公司正在从 Microsoft Office 切换到 Google Docs,我想在 Google 电子表格中使用这个(几个)代码,但我不知道该怎么做。

考虑这个代码示例:

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

【问题讨论】:

  • 这并不简单,我相信没有这样的“转换器”,我建议你仔细阅读文档并尝试一些教程。
  • Apps 脚本使用 JavaScript。你需要学习 JavaScript。
  • 如果您一直在使用 VBA 进行编程,那么您不会觉得 Google Apps 脚本那么难。看看developers.google.com/apps-script/reference/spreadsheet/sheet,你会在那里看到你需要的大部分功能。当您转到“工具|脚本编辑器...”并选择“电子表格”脚本时,您将获得一些模板代码。阅读 Google 文档中的“电子表格”、“表格”和“范围”部分内容应该可以帮助您了解剩下的内容。
  • 相关... “我的公司正在从 Office 切换到 Google Docs” - 这可能是个坏主意。通常不建议将敏感的公司文档置于主要安全模型是网络的其他人的控制之下。网络安全模型很烂。当他们无法处理威胁时,他们只需将其从模型中移除。
  • 我投票决定关闭它,因为这是一个代码翻译请求,偏离主题:meta.stackoverflow.com/a/265834

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


【解决方案1】:

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

examples

【讨论】:

    【解决方案2】:

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

    注意:

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

    【讨论】:

      【解决方案3】:

      函数结构如下:

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

      这可能会转换为:

      function Worksheet_Change(ByVal) {
        Statements Here;
      };
      

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

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

      if (condition) {code here;}
      

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-31
          • 1970-01-01
          • 2020-11-10
          • 1970-01-01
          相关资源
          最近更新 更多