无论 excel 的文件名如何,我都想更新当前文档中当前工作表中的值。
在vb6.0中我们可以做到
Set AppExcel = GetObject(, "Excel.Application")
Set SheetExcel = AppExcel.ActiveWorkbook.ActiveSheet
我一直在尝试在 C# 中做同样的事情。
有没有办法在 C# 中做同样的事情。
最佳答案
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Reflection;
public class MyClass
{
public static void Main()
{
object xlApp = Marshal.GetActiveObject("Excel.Application");
Type t = xlApp.GetType();
t.InvokeMember("Quit", BindingFlags.InvokeMethod, null, xlApp, null);
}
}
我已经根据给定的示例修改了代码 here .
话虽如此,我认为您可以在 vb.net 中编写代码(并使用 GetObject
)并使用来自 c# 的库。
或
您可以引用Microsoft.VisualBasic.dll。
并调用GetObject
.
编辑:你为什么需要这样的东西?创建 Excel 加载项不会有帮助吗?
如果您无论如何都必须用 C# 编写代码,请注意释放您使用 Marshal.ReleaseComObject
创建的 COM 实例。
EDIT2:为了获得对 ActiveSheet
的引用,您可以编写
object sheet = t.InvokeMember("ActiveSheet", BindingFlags.GetProperty, null, xlApp, null);
再次,我建议你不要走这条路。
在 VB6 中编写代码来执行您需要的操作并从 c#/vb.net 调用它。
关于c# - 一种使用 c# 从事件 Excel 工作簿更新事件工作表的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1956830/