c# - 一种使用 c# 从事件 Excel 工作簿更新事件工作表的方法?

标签 c# excel vb6

无论 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/

相关文章:

C# 单元测试 - 奇怪的项目目录

c# - 为什么我的表单在调用 BeginConnect 时卡住?

c# - 您如何访问数据绑定(bind) ContentControl 的 DataTemplate 生成内容?

excel - 在 Excel 中根据条件查找最大值或最小值

vb6 - UAC 给我的应用程序带来问题

sql - 动态创建 SQL 查询时出现语法错误

c# - X分钟后黑屏

excel - 如果工作簿打开超过 2 小时,则从共享工作簿中删除用户

c - 从 C 手动为 excel 创建多表文件

vb6 - 仅在文本框中允许数字值