这是我之前关于 GetObject这个代码的问题的后续内容:
Dim wb As Object ' Lotus123.Document
wb = GetObject("S:\Temp\T\0375D.WK3", "Lotus123.Workbook")
在 VBA 中工作正常,但在 VB.net 中失败并出现错误:FileNotFoundException:“在自动化操作期间找不到文件名或类名。”
我用 Process Monitor 检查了这个过程,发现:VBA 和 VB.net 都检查了这些键:
HKCR\Lotus123.Workbook\CLSID\(Default)
HKCR\CLSID\{29130007-2EED-1069-BF5D-00DD011186B7}
HKCU\Software\Classes
然后 VB.net 简单地停止
但是 VBA 继续使用这些键
HKLM\SOFTWARE\Microsoft\COM3\REGDBVersion
HKCR\CLSID\{29130007-2EED-1069-BF5D-00DD011186B7}\InprocServer32 NAME NOT FOUND
HKCR\CLSID\{29130007-2EED-1069-BF5D-00DD011186B7}\InprocServerX86 NAME NOT FOUND
HKCR\CLSID\{29130007-2EED-1069-BF5D-00DD011186B7}\InprocServer32 NAME NOT FOUND
HKCR\CLSID\{29130007-2EED-1069-BF5D-00DD011186B7}\InprocServerX86 NAME NOT FOUND
HKCR\CLSID\{29130007-2EED-1069-BF5D-00DD011186B7}\LocalServer32 SUCCESS
HKCR\CLSID\{29130007-2EED-1069-BF5D-00DD011186B7}\LocalServer32\(Default) SUCCESS
最后一个给出奖励: 数据:c:\lotus\123\123w.exe 然后VBA继续用指定的文件打开123w.exe程序。
那么为什么VB.net 找不到类名呢?我不明白为什么它只是停止寻找。