C# Excel我有一个编译为tlb的.Net对象,但除了Dispose之外,无法访问任何方法
这是我昨天发布的内容的持续问题 我有一个要在Excel中使用的.net对象。我有一个现有的VBA脚本,我需要对其进行修改,以便从中调用该对象。然后我将该对象转换为TLB。我以前没有真正接触过这个领域,所以任何帮助都将不胜感激 我已经创建了一个接口C# Excel我有一个编译为tlb的.Net对象,但除了Dispose之外,无法访问任何方法,c#,interface,excel,vba,C#,Interface,Excel,Vba,这是我昨天发布的内容的持续问题 我有一个要在Excel中使用的.net对象。我有一个现有的VBA脚本,我需要对其进行修改,以便从中调用该对象。然后我将该对象转换为TLB。我以前没有真正接触过这个领域,所以任何帮助都将不胜感激 我已经创建了一个接口 [Guid("0F700B48-E0CA-446b-B87E-555BCC317D74"),InterfaceType(ComInterfaceType.InterfaceIsDual)] [ComVisible(true)] public inter
[Guid("0F700B48-E0CA-446b-B87E-555BCC317D74"),InterfaceType(ComInterfaceType.InterfaceIsDual)]
[ComVisible(true)]
public interface IOfficeCOMInterface
{
[DispId(1)]
void ResetOrder();
[DispId(2)]
void SetDeliveryAddress(string PostalName, string AddressLine1, string AddressLine2, string AddressLine3, string AddressLine4, string PostCode, string CountryCode, string TelephoneNo, string FaxNo, string EmailAddress);
}
我还创建了一个继承该对象的类
[ClassInterface(ClassInterfaceType.None), ProgId("NAMESPACE.OfficeCOMInterface"), Guid("9D9723F9-8CF1-4834-BE69-C3FEAAAAB530"), ComVisible(true)]
public class OfficeCOMInterface : IOfficeCOMInterface, IDisposable
{
public void ResetSOPOrder()
{
}
public void SetDeliveryAddress(string PostalName, string AddressLine1, string AddressLine2, string AddressLine3, string AddressLine4, string PostCode, string CountryCode, string TelephoneNo, string FaxNo, string EmailAddress)
{
try
{
SalesOrder.AmendDeliveryAddress(PostalName, AddressLine1, AddressLine2, AddressLine3, AddressLine4, PostCode);
MessageBox.Show("Delivery address set");
}
catch (Exception ex)
{
throw ex;
}
}
}
除了dispose,我无法访问对象方法,我想IDisposable可以正常工作。我的界面需要什么吗?只是想让任何人知道我使用了这里的说明,并设法使其正常工作
感谢您回复0xA3,以便让任何人知道我使用了此处的说明,并设法使其正常工作
感谢您回复0xA3您的.NET程序集是否实际使用regasm注册?注意:我知道这只是一个示例,但它似乎显示了一个容易发生的误解。代码
catch(Exception ex){throw ex;}
实际上没有做任何有用的事情<代码>抛出ex代码>将重置堆栈跟踪,您将丢失重要信息。这可能不是你期望它做的,也几乎不是你想要的。您可能只是想重新抛出异常(例如,在写入日志之后)。为此,更换抛出ex代码>与一个简单的抛出代码>。嗨,是的,我用过regasm。我有更多关于这个异常的代码,但我认为我可以简化它作为例子。每次尝试创建实例时,我都会收到一个错误,系统无法找到指定的文件。错误消息是否提供了找不到的文件的更多详细信息?您的.NET程序集是否实际使用regasm注册?注意:我知道这只是一个示例,但它似乎显示了一个容易发生的误解。代码catch(Exception ex){throw ex;}
实际上没有做任何有用的事情<代码>抛出ex代码>将重置堆栈跟踪,您将丢失重要信息。这可能不是你期望它做的,也几乎不是你想要的。您可能只是想重新抛出异常(例如,在写入日志之后)。为此,更换抛出ex代码>与一个简单的抛出代码>。嗨,是的,我用过regasm。我有更多关于这个异常的代码,但我认为我可以简化它作为例子。每次尝试创建实例时,我都会收到一个错误,系统无法找到指定的文件。错误消息是否提供了无法找到的文件的更多详细信息?