我们有一个c#com对象,它是从各种电子表格中的vba代码调用的,有没有办法记录调用com对象的源代码?即excel文件名,工作簿等?
答案 0 :(得分:0)
您可以尝试使用内省来了解调用方法。我不确定这在这种情况下是否有效,因为它是通过COM系统调用的,可能会隐藏原点。无论如何你可以试试这个:
How do I get the calling method name and type using reflection?
答案 1 :(得分:0)
如果您可以控制VBA代码和C#代码,则只需添加一个额外的参数,该参数将被记录为' name'调用COM对象。然后,您可以在调用它的每个项目中自定义该参数。
例如。 C#
[comvisible(true)]
public void doStuff(string callingName, object otherarg, object anotherarg)
{
Console.writeline("Called by " + callingName);
//blah blah blah
}
vba 1
set tmp = ReferenceToCSharpComObject
call tmp.doStuff("Example VBA Script", null, null)
vba 2
set tmp = ReferenceToCSharpComObject
call tmp.doStuff("Second VBA Example", null, null)