【问题标题】:How to convert VBA script to Google Apps Script automatically?如何自动将 VBA 脚本转换为 Google Apps 脚本?
【发布时间】:2012-10-24 20:42:39
【问题描述】:

VBA 是编写 excel 宏的语言。 Google 表格仅支持将 Google 应用脚本作为宏语言。是否有直接或自动的方式将 VBA 脚本转换为 Google Apps 脚本脚本而无需重写代码?

这是我正在尝试转换的示例 VBA 脚本:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngStart As Range, rngCrit As Range
    Set rngStart = Range("A3")
    Set rngCrit = Range("B1")
    On Error GoTo ExitPoint
    Application.EnableEvents = False
    If Not Intersect(Target, rngCrit) Is Nothing Then
        Range(rngStart, Cells(Rows.Count, rngStart.Column).End(xlUp)).ClearContents
        If Val(rngCrit) > 0 Then
            With rngStart.Resize(Val(rngCrit))
                .Value = "=ROW()-" & rngStart.Row - 1
                .Value = .Value
            End With
        End If
    End If
ExitPoint:
    Set rngStart = Nothing
    Set rngCrit = Nothing
    Application.EnableEvents = True
End Sub

我尝试过的:

我尝试用一​​些等效的 Google 脚本替换一些命令。我的问题是我的想法太线性了。我正在尝试以与 VBA 完全相同的方式进行编码,并且只是尝试将关键字从 VBA 切换到 Google Script 中的关键字。我希望有一个直接的方法。

【问题讨论】:

  • 好吧,我尝试用一​​些等效的 Google 脚本替换一些命令。我的问题是我的想法太线性了。我正在尝试以与 VBA 完全相同的方式编写代码,只是尝试将关键字从 VBA 切换到 Google Script 中的关键字
  • 关闭选民,考虑让这个问题悬而未决。这个问题比大多数 vba -> 应用程序脚本转换问题要好,我打算将其用作所有其他问题的近似副本(请参阅linked questions)。如果这个参考问题被关闭并且将来有一个新的简单方法可用,那就不好了。

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


【解决方案1】:

有一些此类“转换”的示例 - 但它们通常是重新实现,而不是转换。这是一个微妙的区别,但很重要。虽然您可以将一种语言翻译成另一种语言是可行的,但真正的挑战在于 Excel/VBA 与 Google 电子表格/Apps Script/javascript 中的底层对象模型和可用方法之间的差异。

您成功的最佳机会是使用 VBA Sub 作为一种规范;如果您能清楚地解释 VBA Sub 实现了哪些功能,那么您就有了在您的 google 电子表格中实现的新功能规范的基础。

【讨论】:

    【解决方案2】:

    您可以使用 GSpread.NET 自动将 VBA 转换为 Google 脚本。 它库允许使用 Microsoft Excel API 读取和写入 Google 电子表格。 示例:http://scand.com/products/gspread/tutorial.html

    【讨论】:

      【解决方案3】:

      谷歌officially recommends Macro convertor add on.

      注意事项:

      • 目前看来需要企业加版的 Google 工作区。
      • 有一个兼容性检查,对于 VBA API,有相应的 Apps 脚本 API (see list),转换是自动的。
      • 对于不直接可用的 api,它仍然不是复制粘贴作业。您仍然应该精通 excel vba 和应用程序脚本以尝试转换,兼容性报告建议 Supported with workaroundsNeeds more investigation

      【讨论】:

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