gpt4 book ai didi

Excel VBA 编译错误

转载 作者:行者123 更新时间:2023-12-03 02:52:57 27 4
gpt4 key购买 nike

我们有一个 Excel 电子表格,我们使用它,它适用于大多数机器,但在其他机器上会因“隐藏模块中的编译错误 - 常规”而崩溃,原因似乎是由于缺少引用。

我们检查宏是否已启用,但仍然没有帮助。

由于我们使用密码保护此 Excel 电子表格,因此我们不想将此密码提供给用户来检查引用文献,并且想知道是否有人知道如何添加 VBA 代码来检查是否Excel 电子表格所需的引用资料存在,如果没有,则显示一个消息框来建议用户。

我们使用的引用文献如下:

  • Visual Basic 应用程序
  • Microsoft Excel 11.0 对象库
  • Microsoft Forms 2.0 对象库
  • Microsoft Windows 通用控件 5.0 (SP2)

或者,如果有人对如何解决这个问题有任何其他建议,那就太好了。

最佳答案

您列出的唯一可能缺少的引用是通用控件。其余的在每个版本的 Excel 中都是默认的。表单仅适用于您有用户表单或明确设置它的情况,但这不是您的问题。通用控件是您的问题。它不再随 Office 一起提供。如果您有 Visual Studio 或 VB6,那么您可能已经有了。或者旧版本的 Office,例如 XP Developer Edition。

无论如何,您可以检查系统文件夹中是否存在 OCX 文件。我认为它不需要位于该文件夹中,但我从未在其他地方见过它。

我已经有一段时间没有看到对 5.0 的引用了,所以我在下面的代码中包含了如何查找 6.0 的内容。检查并确保您知道您正在使用什么版本。

在标准模块中:

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Public Function HasCommonControl() As Boolean

Dim sFolder As String
Dim lReturn As Long

Const lSIZE As Long = 255
Const sDLLNAME As String = "COMCTL32.OCX" 'For windows common control 5.0
'Const sDLLNAME As String = "MSCOMCTL.OCX" 'For windows common control 6.0

sFolder = Space(lSIZE)
lReturn = GetSystemDirectory(sFolder, lSIZE)

sFolder = Left$(sFolder, lReturn)

HasCommonControl = Len(Dir(sFolder & Application.PathSeparator & sDLLNAME)) > 0

End Function

说了这么多,为什么要使用通用控件?如果它用于用户窗体上的 TreeView ,请查看此全 vba TreeView

http://www.jkp-ads.com/articles/treeview.asp

自从 jkp 写了这篇文章以来,我就没有使用过通用控件。很少有普通人的电脑安装了它,所以这很痛苦。

关于Excel VBA 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18116285/

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