|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 liucqa 于 2012-11-19 15:09 编辑
http://msdn.microsoft.com/zh-cn/library/bb608613%28v=vs.100%29.aspx
参考上贴,抄袭了一个通过VBA调用VSTO(C#)函数的示例
Sheet1.cs中的代码
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Xml.Linq;
- using Microsoft.Office.Tools.Excel;
- using Microsoft.VisualStudio.Tools.Applications.Runtime;
- using Excel = Microsoft.Office.Interop.Excel;
- using Office = Microsoft.Office.Core;
- namespace CallingCodeFromVBA
- {
- //在 Sheet1 类声明的第一行前面应用下列特性。这些特性使类对于 COM 可见,但不生成类接口。
- [System.Runtime.InteropServices.ComVisible(true)]
- [System.Runtime.InteropServices.ClassInterface(
- System.Runtime.InteropServices.ClassInterfaceType.None)]
- public partial class Sheet1 : CallingCodeFromVBA.ISheet1
- {
-
- //下面是准备从文档的 VBA 代码中调用 的MyMsg函数。
- public void MyMsg(string msg)
- {
- MessageBox.Show(msg);
- }
- //此方法将重写 GetAutomationObject() 方法,以返回 Sheet1 类的当前实例。
- protected override object GetAutomationObject()
- {
- return this;
- }
- private void Sheet1_Startup(object sender, System.EventArgs e)
- {
- }
- private void Sheet1_Shutdown(object sender, System.EventArgs e)
- {
- }
- #region VSTO 设计器生成的代码
- /// <summary>
- /// 设计器支持所需的方法 - 不要
- /// 使用代码编辑器修改此方法的内容。
- /// </summary>
- private void InternalStartup()
- {
- this.Startup += new System.EventHandler(Sheet1_Startup);
- this.Shutdown += new System.EventHandler(Sheet1_Shutdown);
- }
- #endregion
- }
- }
复制代码
ISheet1.cs中的代码
- using System;
- namespace CallingCodeFromVBA
- {
- //添加
- [System.Runtime.InteropServices.ComVisible(true)]
- //此代码使 ISheet1 接口成为公共接口,并且应用 ComVisibleAttribute 特性以使该接口对于 COM 可见。
- public interface ISheet1
- {
- void MyMsg(string msg);
- }
- }
复制代码
将 Sheet1 宿主项的“ReferenceAssemblyFromVbaProject”属性设置为“True”。
该设置会在Excel文件中增加对VSTO函数所在文件的引用
在模块1中使用VSTO函数
Sub CallVSTOMethod()
Dim VSTOSheet1 As CallingCodeFromVBA.Sheet1
Set VSTOSheet1 = GetManagedClass(Sheet1)
Call VSTOSheet1.MyMsg("hello")
End Sub
工程文件
CallingCodeFromVBA.rar
(861.34 KB, 下载次数: 209)
发布的文件
publish.rar
(379.36 KB, 下载次数: 139)
|
|