Excel 2013到2010与ActiveX的向后兼容性问题(不是Dec14th更新问题)

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

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

我创build的testing文件/代码始终如一地显示问题是模块中包含以下代码的工作簿:

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 

并在表单中的代码。 它使用这个代码,并select单元格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命令button被添加到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的计算机上打开,工作簿将不再起作用。

这是非常独特的,它已经很难testing。 目前,我似乎有唯一的select是用窗体控件replace我所有的命令button。 这也是与安全更新(这实在是混浊的水域)分开的问题。 我很想获得关于这个问题的可能修复的反馈,甚至只是从别人那里确认这是一个Excel问题,而不是以某种方式限于我们的安装。

谢谢

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

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

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