告诉VBA查看64位注册表视图

时间:2018-08-14 15:07:41

标签: vba excel-vba winapi registry clsid

我想为变量分配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)':
  自动化错误

我发现HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID的注册表中存在CLSID。

CLSID registry system.collections.arraylist

Office是32位的,而Windows是64位的。我对注册表不熟悉,但是从我阅读的内容来看,似乎32位Office试图在某些32位Windows位置(视图)中查找ArrayList,而实际上是在64位位置。可以吗?如何使应用程序从正确的位置获取ArrayList?

看来,要访问alternative registry view,我应该以某种方式使用标志KEY_WOW64_64KEY(值0x0100),但是我发现的示例太大了,无法理解(eg1eg2 )。我不想编辑注册表数据,我只想告诉VBA我正在使用64位Windows,因此可以在所需的其他地方找到我需要的对象。

0 个答案:

没有答案