我想将一个分配ArrayList给一个变量。
Sub Create_ArrayList()
Dim arrL As Object
'Creating an ArrayList, option 1 - fails
Set arrL = CreateObject("System.Collections.ArrayList")
'Creating an ArrayList, option 2 - fails
Set arrL = GetObject("New:{6896B49D-7AFB-34DC-934E-5ADD38EEEE39}")
End Sub
两个选项都失败:
运行时错误“-2146232576 (80131700)”:
自动化错误
我发现CLSID存在于注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
Office 是 32 位的,Windows 是 64 位的。我不熟悉注册表,但从我所读到的内容看来,32 位 Office 正试图在某些 32 位 Windows 位置(视图)中找到 ArrayList,而它实际上位于 64 位位置。可以吗?如何让应用程序从正确的位置获取 ArrayList?
看来,要访问替代注册表视图,我应该以某种方式使用标志 KEY_WOW64_64KEY(值 0x0100),但我发现的示例太大而无法理解(eg1,eg2)。我不想编辑注册表数据,我只想告诉 VBA 我正在使用 64 位 Windows,所以我需要的对象是在它期望的其他地方找到的。
