从 C# 调用具有用户定义类型的 VBA 宏?

发布于 2024-10-13 14:13:22 字数 115 浏览 2 评论 0原文

我有一个带有 VBA 模块的 Word 文档,其中包含用户定义的类型(公共类型 XXX)和一些将此类型作为参数的公共子项。是否可以通过应用程序的 Run() 从 C# 调用这些子程序?

问候, 史蒂文

I've got a Word Document with a VBA Module that contains user defined Types (public Type XXX) and some public subs that take this Type as arguments. Is it possible to call these subs from C# via Application's Run()?

Greetings,
Steven

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

送舟行 2024-10-20 14:13:22

我不知道您是否可以灵活地执行此操作,但这就是我解决此问题的方法。

  1. 创建另一个程序集(我称之为“xx.Common”)
  2. 在其中添加一些结构,使它们 COM 可见
  3. 从 VBA 和 C# 项目引用该程序集
  4. 添加一个新的 VBA 子程序,并将这些结构作为参数

您现在可以传入结构化,用户定义的数据。如果你概括这个想法,你可以使用任何 COM 可见类型(即不仅仅是结构)。只要两个项目都引用定义这些类型的程序集,就应该没问题。

I don't know if you have the flexibility to do this, but here's how I solved this.

  1. Create another assembly (I called mine "xx.Common")
  2. Add some structs in there, make them COM-visible
  3. Reference that assembly from both the VBA and C# projects
  4. Add a new VBA sub with those structs as arguments

You can now pass in structured, user-defined data. If you generalize this idea, you can use any COM-visible type (i.e. not just structs). As long as both projects reference an assembly that defines these types, you should be ok.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文