【问题标题】:VSTO: "Can't find project or library" error occurs on Property Get CallVSTOAssemblyVSTO:Property Get CallVSTOAssembly 上出现“找不到项目或库”错误
【发布时间】:2011-03-18 18:54:28
【问题描述】:

使用 Visual Studio 2008 使用 VSTO 自定义 Excel 2007 工作簿

最近在 Excel VBA 编辑器中的以下代码行开始出现“找不到项目或库”错误:

   Property Get CallVSTOAssembly() As ShipdebitClaimProcessor.ThisWorkbook

这只发生在使用已发布版本的客户端上。在我的开发 PC 上它工作正常。在 VBE 的客户端上,在工具、参考下,它说

MISSING: ShipDebitClaimProcessor
Location: C:\MyCompany\OfficeApplication\Excel\ShipDebitClaimProcesor\bi

虽然该位置似乎被截断,但它可能指向位于 bin 文件夹中的程序集,因为它存在于我的开发 PC 上。当然,这个路径在客户端是不存在的。它应该说什么来使它在客户端上工作,以及如何纠正它?是否应该以某种方式引用 ClickOnce 缓存?

这种定制已经使用了好几年。它可能已被最近的更改所破坏,这些更改涉及删除一些工作表和更改 VBA 代码。我尝试使用现有的 Excel 文件从头开始创建一个新项目,但无济于事。

【问题讨论】:

    标签: excel vba clickonce vsto customization


    【解决方案1】:

    我相信你需要

    • 使库在客户端桌面上可用

    • 从项目中删除引用

    首先,您需要知道在项目中使用每个引用的原因和时间。我认为现在最好的做法是删除引用并重新测试您的应用程序,以确保不再使用此库(否则,在以前的版本中,如果没有它,客户也会遇到问题)。

    Rgds

    【讨论】:

    • 这是一个使用 ClickOnce 的 VSTO(Visual Studio Tools for office)应用程序,如使用 VSTO 扩展您的 VBA 代码 (msdn.microsoft.com/en-us/magazine/cc163373.aspx) 中所述。删除引用会导致消息“编译错误:未定义用户定义的类型”,光标位于“Property Get CallVSTOAssembly()”上。当我在 Visual Studio 中设置 EnableVbaCallers 属性时,VSTO 生成了 CallVSTOAssembly 属性。 CallVSTOAssembly 的目的是将 VBA 连接到我的 VSTO (.NET) 程序集 ShipDebitClaimProcessor.dll,从而可以从 VBA 调用其 .NET 代码。
    • 该语句已被我编写的其他 VBA 代码调用了好几年。在 Visual Studio 中将 EnableVbaCallers 设置为 true 时,Visual Studio 会自动将另一个属性设置为 true:ReferenceAssemblyFromVbaProject (msdn.microsoft.com/en-us/library/bb386306.aspx#PropertyTasks)。这将创建在工具、参考下可见的参考。在我的疑难解答中,有一次我以为我注意到了其中的 GUID,它可能是由 VSTO (msdn.microsoft.com/en-us/library/ds87aeyf%28v=VS.90%29.aspx) 自动创建的 _AssemblyName 属性的值。
    • 我想知道 GUID 是否属于那里,而不是我的 bin 文件夹的路径,但我不知道如何让 VSTO 重新创建 GUID。 msdn.microsoft.com/en-us/library/bb386306.aspx 上的疑难解答部分,在第四行,有点接近问题。 “重命名自定义程序集后,调用自定义程序集的 VBA 代码将停止工作。”但是,它推荐的解决方案在我的情况下不起作用。
    • 我在切换 ReferenceAssemblyFromVbaProject 的值时收到弹出错误消息:“HRESULT 中的“属性值无效”异常:0x800A802D。对于这些搜索,我在搜索引擎上没有命中:“属性值无效” ReferenceFromVbaAssembly“属性值无效”HRESULT 中的 EnableVbaCallers 异常:0x800A802D
    • 六周前,我对应用程序进行了更改,并在本地对其进行了测试。没有发现错误我发布了它。直到几天前,当发现错误时,它才投入使用。在测试 PC 上进行的初步故障排除中,我在事件日志中发现了一条暂时性错误消息:Microsoft.VisualStudio.Tools.Applications.Runtime.ControlNotFoundException:此文档可能无法按预期运行,因为缺少以下控件:Sheet5。依赖此控件的数据不会自动显示或更新,其他自定义功能将不可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多