【问题标题】:Excel 2013 to 2010 backward compatibility issue with ActiveX (NOT Dec14th update issue)Excel 2013 到 2010 与 ActiveX 的向后兼容性问题(不是 12 月 14 日更新问题)
【发布时间】:2015-02-06 19:39:02
【问题描述】:

我正在将一组使用 VBA 代码进行查找、数据操作和计算的相互关联的 Excel 文档从 Excel 2010 转换到 Excel 365。我的开发机器上都有这两个文档,但是这些文档会(通过电子邮件)发送给各地的客户然后返回。我使用 .xlmb 文件格式来节省文件大小,但这似乎不会影响结果。

当前问题 当我在我的开发机器上使用 365 保存工作簿时,当从仅安装了 2010 的机器上运行运行我的 VBA 代码的操作时,用户会遇到错误(如果安装了两个版本,则该行为似乎不会发生)。我将问题集中在模块中有代码并且工作表上有 ActiveX 控件时。似乎只有这种组合会造成问题。

我创建的始终显示问题的测试文件/代码是一个模块中包含以下代码的工作簿:

Dim strBook As String
' Worksheet Names
Public Const wksTest = "Sheet1"

Public Function TestMe(PassedSheet As String)

    strBook = ActiveWorkbook.Name

    Workbooks(strBook).Worksheets(PassedSheet).Protect
    Workbooks(strBook).Worksheets(PassedSheet).Unprotect

    MsgBox "Worked from function", vbOKOnly, "Response"

End Function

以及工作表中的代码。它使用此代码并选择单元格 B2 保护然后取消保护工作表,同时显示消息框:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Row = 2 And Target.Column = 2 Then

        strBook = ActiveWorkbook.Name

        Me.Protect
        Me.Unprotect

        MsgBox "Worked from sheet", vbOKOnly, "Response"

        Call TestMe(wksTest)

    End If

End Sub

但是,如果将名为“TestButton”的 ActiveX 命令按钮添加到 Sheet1 并添加以下代码:

Private Sub TestButton_Click()

    strBook = ActiveWorkbook.Name

    Me.Protect
    Me.Unprotect

    MsgBox "Worked from Button", vbOKOnly, "Response"

    Call TestMe(wksTest)

End Sub

如果从 365 保存并在仅安装 2010 的计算机上使用 2010 打开,则工作簿将不再起作用。

这很独特,很难测试。目前,我似乎唯一的选择是用表单控件替换我的所有命令按钮。这也是安全更新之外的一个单独问题(这真的是在搅浑水)。 我很想获得有关此问题的可能修复的反馈,甚至只是从其他人那里确认这是一个 Excel 问题,并且不限于我们的安装。

谢谢

【问题讨论】:

    标签: vba excel activex


    【解决方案1】:

    我正在寻求有关类似问题的帮助,并在 Microsoft 帮助网站上偶然发现了此信息。如果这不能解决您遇到的问题,那么这可能是朝着正确方向迈出的一步:

    “如果工作簿包含被认为初始化不安全 (UFI) 的 ActiveX 控件,当您将工作簿保存为早期的 Excel 文件格式时,这些控件会丢失。您可能希望将这些控件标记为初始化安全 (SFI) )。

    怎么做:如果您打开一个包含未初始化 ActiveX 控件的工作簿,并且该工作簿设置为高安全性,您必须先使用消息栏启用它们,然后才能对其进行初始化。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多