首先,我为相当糟糕的头衔道歉;我真的不确定如何描述我在一个体面的头衔中遇到的问题。
无论如何,我最近在Visual Studio 2013中启动了一个项目,并从Excel中的旧项目中引用了一些DLL。一开始就引用了所有内容,但是当我今天启动我的PC时,我注意到MSForms即使被引用也不再被识别。
我尝试重建项目,重新启动项目,启动新项目,将设置重置为默认值,删除设置文件并重新安装Visual Studio,重新启动PC,使用旧设置重新安装Visual Studio,移动DLL并引用它再次尝试以32位模式等运行程序
我几个小时一直在搞乱这个问题,我一直在谷歌搜索这些论坛以寻找可能的解决方案。奇怪的是,这是一个默认的Windows DLL,它没有下载...此 DLL在Excel-VBA中工作得很好,但它拒绝在Visual Studio 2013中工作。< / p>
起初我以为它只是MSForms,但在检查了一些其他引用的DLL后,我注意到Winhttp和其他一些也没有工作,但是.. Imagemagick运行正常,这是第三方库。在这一点上,我很难过,无论如何,我会在下面的区域中抛出一些代码和参考图像。
Dim test As MSForms.DataObject <--- Tells me that it isn't defined
这些是当前在程序中的引用,所以它似乎已被引用,但它似乎没有实际加载。
更新
Winhttp似乎现在正在运作,但MSForms仍然被打破。 MSForms在Excel中仍能完美运行,但Visual Studio有问题吗?答案 0 :(得分:1)
该COM服务器中声明的命名空间名称不是 MSForms
。您的旧项目可能不小心依赖于VBA生成名为&#34; MSForms.exd&#34;的临时类型库。这是一个坏主意,当然这个文件不太可能仍然存在。所以这段代码不能编译。
将其复制/粘贴到源代码文件的顶部以获得最佳效果:
Imports MSForms = Microsoft.Vbe.Interop.Forms
答案 1 :(得分:0)
您是否尝试删除&#34; MSForms&#34;?
Dim test As DataObject
这对我有用,但我不确定它是否与您正在寻找的组件相同。