【问题标题】:using a managed DLL (C#) with Office 365 (Excel)将托管 DLL (C#) 与 Office 365 (Excel) 一起使用
【发布时间】:2018-12-19 16:22:57
【问题描述】:

最近有人决定将所有 Excel 2010 迁移到 Office 365... 64 位 最近他​​们意识到在 VBA 中使用了一些 ActiveX、旧版 DLL(用 vb6 编写!!)。 当然,它们不会在 Office 365 中运行,因此我们正在尝试将它们迁移到 .NET 4.5。 我们在 C# 中做了一个小示例 dll(返回一个字符串)。它适用于 Excel 2010,但不适用于 365。(错误 429)。 现在的问题是: 1.它应该起作用/有可能使它起作用吗? 2. 如果有怎么办? 3.如果不是,那么正确的做法是什么(最好不要转储VBA代码)?

好的,vba中的代码很简单

喜欢

Dim x as New Element365.Connection
Dim s as String
s = x.get_String
MsgBox s

and the code in c# just as well...(The dll's name/namespace is Element365)

public class Connection {

public Connection() {
}

public String get_String() {
return "This is a Test"
}
}

提前致谢

【问题讨论】:

  • 可能为了说清楚,我们使用regasm注册dll,在VBA中添加引用(找到组件)来使用。但是,当尝试使用它时……它失败了!
  • 澄清一下,Office 365 是桌面安装?如果没有,请考虑将代码移植到 TypeScript / Office-JS。
  • 尽管有一些原因阻止您考虑使用 Office-JS,但没有足够的信息可以帮助您解决问题。一方面,我们需要查看您在 C# dll 和 VBA 中使用的代码来读取该字符串,以便在出现问题时提供帮助。尽管您显然能够注册 DLL,但它可能无法工作的原因有多种。
  • 好的,我大致添加了代码。对于 DLL,我检查了项目属性中的 COM 内容。老实说,我不知道是否需要其他任何东西。也许我会试试这个link

标签: .net vba 64-bit office365 activex


【解决方案1】:

好吧,简单地说,如上所述,该 DLL 曾经在 Excel 2010 中工作...

所以这不是问题所在。 所以这一切都归结为在 64 位中使用 regasm……

修复它。

无论如何感谢您的 cmets。

【讨论】:

    猜你喜欢
    • 2015-01-20
    • 2012-02-29
    • 1970-01-01
    • 2011-04-29
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多