我在Visual Studio 2012中创建了一个COM加载项,当我在我的机器上编译并运行它时,它运行得很好。当我尝试使用我创建的Windows安装程序来安装加载项时,会出现问题。我正在尝试将此加载项安装到多台计算机上,我想弄清楚问题出在安装程序上。
当我尝试使用Excel从COM加载项调用Sub时,会抛出超出范围的'下标'在第二行。 Sub连接到SQL服务器,基于单元数据执行查询,并返回结果。我查看了Excel中的加载项,它已安装而非非活动/禁用。如果我在我的机器上编译项目,那么相同的代码就可以正常工作,而不是在我使用安装程序安装加载项时。
Dim com as COMAddIn
Set com = Application.COMAddIns("SQL") <----
com.Object.ConStr
我按照本指南安装了安装程序:
https://msdn.microsoft.com/en-us/library/Cc442767.aspx
我执行了以下操作以使安装程序运行(只是上述文章的摘要):
告知安装程序以创建以下注册表路径
HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\JACOB.SQL
创建以下注册表项
Description SQL
FriendlyName SQL
LoadBehavior 3
Manifest file:///[INSTALLDIR]SQL.vsto|vstolocal
我确保从Excel中卸载我的项目的编译版本,然后转到以下文件路径并运行setup.exe。
%Visual Studio 2012%\Projects\SQL\Setup1\SQL_Setup\Express\SingleImage\
DiskImages\DISK1
安装程序完成后,我运行了与上面相同的代码,并返回了超出范围的&#39;下标&#39;错误。正如我之前所说,如果我编译代码,相同的代码就可以工作。
Dim com as COMAddIn
Set com = Application.COMAddIns("SQL") <----
com.Object.ConStr
我已经研究过这个问题,并且大部分都是空白的。我发现我可能需要DllRegisterServer / DllUnregisterServer方法将我的dll添加到Regsvr32的注册表中,但我不知道如何编写这些方法。如果编译的项目在没有这些方法的情况下工作,我也不知道这可能是什么问题。也许安装程序会跳过一步?
任何帮助都会非常感激。谢谢!