Excel 2013至2010向后兼容性问题与ActiveX(非Dec14th更新问题)

时间:2015-02-06 19:39:03

标签: excel vba excel-vba activex

我正在转换一组相互关联的Excel文档,这些文档使用VBA代码进行查询,数据操作和从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

但是,如果一个ActiveX命令按钮名为" TestButton"添加到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的计算机上打开,则工作簿将不再起作用。

这很独特,很难测试。目前,我似乎唯一的选择是用Form Controls替换所有命令按钮。这也是安全更新的一个独立问题(这实际上是混乱的水域)。 我希望获得有关此问题的可能修复的反馈,或者甚至只是确认其他人这是一个Excel问题,而不是仅限于我们的安装。

由于

1 个答案:

答案 0 :(得分:0)

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

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

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