我正在转换一组相互关联的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问题,而不是仅限于我们的安装。
由于
答案 0 :(得分:0)
我正在寻找类似问题的帮助,并在Microsoft帮助网站上发现了这些信息。如果这不能解决您所遇到的问题,那么可能是朝着正确方向迈出的一步:
“如果工作簿包含被认为不安全的初始化(UFI)的ActiveX控件,则在将工作簿保存为早期的Excel文件格式时会丢失它们。您可能希望将这些控件标记为安全初始化(SFI) )。
怎么做:如果打开包含未初始化ActiveX控件的工作簿,并且工作簿设置为高安全性,则必须先使用消息栏启用它们,然后才能初始化它们。“