gpt4 book ai didi

vba - Excel 2013 到 2010 与 ActiveX 的向后兼容性问题(不是 12 月 14 日更新问题)

转载 作者:行者123 更新时间:2023-12-04 21:04:15 27 4
gpt4 key购买 nike

我正在将一组使用 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 问题,并且不限于我们的安装。

谢谢

最佳答案

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

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

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

关于vba - Excel 2013 到 2010 与 ActiveX 的向后兼容性问题(不是 12 月 14 日更新问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28373463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com