相关疑难解决方法(0)

Canonical:如何从Excel VBA调用.NET方法

我找到了一种直接从VBA宏调用.NET 2代码的方法:

Dim clr As mscoree.CorRuntimeHost
Set clr = New mscoree.CorRuntimeHost
clr.Start
Dim domain As mscorlib.AppDomain
clr.GetDefaultDomain domain
Dim myInstanceOfDotNetClass As Object
Set myInstanceOfDotNetClass = domain.CreateInstanceFrom("SomeDotNetAssembly.dll", "Namespace.Typename").Unwrap
Call myInstanceOfDotNetClass.ExecuteSomeDotNetMethod
Run Code Online (Sandbox Code Playgroud)

(为了使这段代码工作,我想在Excel中使用工具 - >引用...将对mscoree.tlb和mscorlib.tlb的引用添加到Excel VBA)

但这仅适用于.NET CLR 2程序集,最高可达.NET Framework 3.5版.

现在我需要使用.NET 4.

我已经了解.NET CLR4引入了另一种与版本无关的创建运行时实例的方法,我还发现了一个用C++编写的相当简单的代码示例:http: //dev.widemeadows.de/2014/02/ 04 /托管最净-4-运行时在-一个天然过程/

但是我的Excel VBA技能还不足以将这几行代码转换为工作的VBA makro.有人能帮帮我吗?

.net c# clr vba runtime

22
推荐指数
4
解决办法
2万
查看次数

无法转换为类型库 - 错误:找不到元素

阅读:我正在回答我自己的问题,因为它将来会帮助其他人.

我收到错误:

程序集"C:\ XYZ.dll"无法转换为类型库.处理"XYZ"时,类型库导出器遇到错误.错误:找不到元素.

以下是导致问题的代码:

[Guid("7a4e9867-96a7-43f0-9492-0327b9053853"),
ClassInterface(ClassInterfaceType.None)]
public class TimeSeriesPoint
{
    public string Date { get; set; }
    public float Value { get; set; }
}

[Guid("7a4e9867-96a7-43f0-9492-0327b9053853"),
InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IDataHelper
{
    //RCOMServerLib.IStatConnector Connector { set; }
    string Text { set; }
    void DoCallback();
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net com

9
推荐指数
1
解决办法
7850
查看次数

标签 统计

.net ×2

c# ×2

clr ×1

com ×1

runtime ×1

vb.net ×1

vba ×1