明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 516|回复: 0

vba调用c#函数

[复制链接]
发表于 2021-11-23 00:02 | 显示全部楼层 |阅读模式
Vba 如何调用c# 函数
先看三个网站
1 https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/interop/example-com-classCOM 类示例2  vba调用c#dll_weixin_30656145的博客-CSDN博客 vba调用c#dll 3 https://docs.microsoft.com/zh-cn/dotnet/framework/tools/regasm-exe-assembly-registration-tool  Regasm.exe(程序集注册工具)COM注册命令 实例:代码
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace ClassLibrary6
{
   public class Class1
   {
       [Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")]
       public interface ComClass1Interface
       {
            [DispId(1)]
            double Fwj(double x1, double y1, double x2, double y2);
       }
       [Guid("7BD20046-DF8C-44A6-8F6B-687FAA26FA71"),
            InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
       public interface ComClass1Events
       {
       }
       [Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"),
           ClassInterface(ClassInterfaceType.None),
            ComSourceInterfaces(typeof(ComClass1Events))]
       public class ComClass1 : ComClass1Interface
       {
            public double Fwj(double x1, double y1, double x2, double y2)
            {
                double Fwj;
                double PI = 3.1415926;
                double dx = x2 - x1;
                double dy = y2 - y1 +0.0000000001;
                Fwj = PI - Math.Sign(dy) * PI /2 - Math.Atan(dx / dy);
                return Fwj;
            }
       }
   }
}
注册com
在视图终端中输入 sn –k ClassLibrary6.snk com进行注册
ClassLibrary6目录下生成一个 ClassLibrary6.snk,把ClassLibrary6.snk拷贝到 ClassLibrary6目录下的ClassLibrary6文件中
打开AssemblyInfo.cs。在里面加入[assembly:AssemblyKeyFile("ClassLibrary6
项目属性->应用程序->程序集信息->选中“使程序集COM可见
项目属性->生成->选中“为COM互操作注册”
生成解决方案
在debug文件中生成三个文件
file:///C:/Users/flz/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png
在代码中new 一个对象就可以调用这个c#的函数了。
Sub jjj()
Dim o As New ClassLibrary6.ComClass1
s = o.Fwj(1, 1, 10, 10)
MsgBox s
End Sub

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-7 12:08 , Processed in 0.321959 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表