从excel VBA初始化C#类
我有一门VBA课程:从excel VBA初始化C#类,c#,excel,vba,initialization,C#,Excel,Vba,Initialization,我有一门VBA课程: Option Explicit Private mo As omMsg.Message Private Sub Class_Initialize() Set mo = New omMsg.Message End Sub Private Sub mo_OnMessageSend(ByVal status As omMsg.ProcessStatus, ByVal msg As String) ProcessComMessage status, msg End S
Option Explicit
Private mo As omMsg.Message
Private Sub Class_Initialize()
Set mo = New omMsg.Message
End Sub
Private Sub mo_OnMessageSend(ByVal status As omMsg.ProcessStatus, ByVal msg As String)
ProcessComMessage status, msg
End Sub
mo_OnMessageSend没有被调用
C类课程如下:
namespace omMsg
{
public interface IMessage
{
void sendMessage(Message.ProcessStatus status, string msg);
event Message.MessageHandler OnMessageSend;
}
[ClassInterface(ClassInterfaceType.None)]
public class Message : IMessage
{
public enum ProcessStatus { Retrieving, Generating, Error, Complete }
public delegate void MessageHandler(ProcessStatus status, string msg);
public event MessageHandler OnMessageSend;
public void sendMessage(ProcessStatus status, string msg)
{
if (OnMessageSend != null)
OnMessageSend(status, msg);
}
}
}
请帮忙。我这样做对吗
谢谢。:
我们将从一个非常基本的示例开始。我们会得到Excel
调用以字符串作为输入的.NET方法(例如“
并返回与该输入字符串连接的“Hello”(因此,
例如,“你好,世界”)
-在VisualStudio2005中创建一个名为“DotNetLibrary”的C#Windows类库项目。这是哪个文件夹并不重要
本示例的目的如下
-要从Excel调用库中类中的方法,我们需要该类具有默认的公共构造函数。显然,这门课也很重要
需要包含我们要调用的任何方法。为了这次步行
只需将以下代码复制并粘贴到我们的默认类文件中:
就是这样:如果你看网络上现有的文章,或者阅读
MSDN帮助,您可能认为您需要使用接口或装饰
您的类具有属性和guid。但是,对于基本的互操作
您不需要这样做
-Excel将使用COM与我们的图书馆进行通信。Excel要使用COM库,需要在
登记处。VisualStudio可以为我们生成这些条目
为此,请打开项目属性(双击“属性”
在解决方案资源管理器中)。然后:i)在“应用程序”选项卡上,单击
“程序集信息…”按钮。在生成的对话框中,检查
“使程序集COM可见”复选框。单击“确定”。ii)关于“构建”
选项卡选中“为COM互操作注册”复选框(朝向底部:
您可能需要向下滚动)
-建立图书馆
-现在启动Excel并打开一个新的空白工作簿。在Excel2007中打开VBA代码编辑器:i)这有点难找到。你有
使“开发人员”选项卡在功能区上可见(如果尚未设置)
向上的要执行此操作,请单击Microsoft Office按钮(屏幕左上方)
屏幕),然后单击Excel选项(最底部)。检查
结果选项中的“在功能区中显示开发人员选项卡”复选框
对话单击“确定”。这会将“开发人员”添加到功能区菜单的末尾:
点击这个。然后单击屏幕左端的“Visual Basic”图标
丝带。ii)在早期版本的Office(2003、XP、2000)中,只需转到
菜单栏上的工具/宏/Visual Basic编辑器
-我们现在需要包括对我们新图书馆的参考。在Visual Basic编辑器的“工具”菜单上选择“引用”。如果你滚动
在生成的对话框中,您应该会发现“DotNetLibrary”是
在名单上。选中旁边的复选框,然后单击“确定”
-现在打开Sheet1的代码窗口(在项目窗口中双击Sheet1)。将下面的VBA代码粘贴到“代码”窗口中
表1:
-单击刚刚粘贴的代码中的任意位置,然后单击“F5”以运行代码。你应该得到一个“Hello World”消息框
这可能有助于:
using System;
using System.Collections.Generic;
using System.Text;
namespace DotNetLibrary
{
public class DotNetClass
{
public string DotNetMethod(string input)
{
return "Hello " + input;
}
}
}
Private Sub TestDotNetCall()
Dim testClass As New DotNetClass
MsgBox testClass.DotNetMethod(“World”)
End Sub