【问题标题】:VBA 7.1 Backwards CompatibilityVBA 7.1 向后兼容性
【发布时间】:2017-12-06 22:31:40
【问题描述】:

我正在使用带有 excel 2016 的 VBA 7.1 开发一些 VBA 代码,作为大型企业应用程序的一部分(主要不是在 excel 中)。宏从 C# 应用程序运行并用于以电子表格的形式导出数据。我正在寻找一个很好的指南,了解这些宏将在哪些版本的 excel 上正常运行,以及我可以在哪里查找可能导致我的代码中断的更改。我使用 excel 2016 开发它,它的向后兼容性如何?

如果可能的话,我想让它与 2010 年的 excel 版本兼容。

【问题讨论】:

  • VBA 本身多年来基本没有变化 - 只发生了特定于主机应用程序的更改,但我不知道有任何指南列出了支持每种方法的版本:您需要分别检查它们。您需要支持 Excel 时间线多远?
  • 一件疯狂的事情:excel2016 中的表格高度减少了 8 pt。我检查 excel 版本并减去 8 pts 来复制低于 16 的版本。让我疯狂地发现......
  • @bohmbac2 您可以分享如何从 C# 和 2016 执行此操作的任何链接,即从 C# 运行 2016 excelsheet 的宏/vb 脚本

标签: c# vba excel


【解决方案1】:

如果您需要兼容 VBA6 和 VBA7,这是一个很好的示例,如何通过编译器常量来实现:

Option Explicit

#If VBA6 Then
    Sub RunTheApp()
        Debug.Print "VBA6"
    End Sub
#ElseIf VBA7 Then
    Sub RunTheApp()
        Debug.Print "VBA7"
    End Sub
#Else
    Sub RunTheApp()
        Debug.Print "You cannot come here from TestMe()"
    End Sub
#End If

Sub TestMe()
    RunTheApp
End Sub

一旦您尝试运行TestMe 模块,它将打印VBA6VBA7,具体取决于您的系统。

MSDN - Compiler Constants

一般而言,VBA7 对 64 位环境具有兼容性。这是 MSDN 文章,了解这两者之间的区别 - Compatibility between the 32-bit and 64-bit Versions of Office 2010 如果您使用的是嵌入在动态链接库中的外部函数,那么阅读它是个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多