您列出的唯一可能缺少的参考是常用控件。其余的是每个版本的 Excel 中的默认设置。只有当您有用户表单或明确设置它时,Forms 才会出现,但这不是您的问题。通用控件是您的问题。它不再随 Office 提供。如果你有 Visual Studio 或 VB6,你可能已经有了。或者像 XP Developer Edition 这样的旧版 Office。
无论如何,您可以检查系统文件夹中是否存在 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
说了这么多,你为什么要使用通用控件?如果它是用于用户窗体上的树视图,那么请查看这个全 vba 树视图
http://www.jkp-ads.com/articles/treeview.asp
自从 jkp 写了之后,我就没有使用过通用控件。很少有普通人的电脑安装它,这只是一种痛苦。