在打开的Excel中运行宏或启动Excel并在C#中运行它

问题描述 投票:0回答:1

我需要运行 Excel 文件中存在的宏。该宏将在文件中创建一个新工作表并在其中填充数据。该宏可以调用任意多次,并且每次都会在同一工作簿中生成一个新工作表。

有两种情况:

  1. 如果 Excel 文件已打开,则应从同一个 Excel 文件调用宏,而不是创建新文件。
  2. 如果文件没有打开,那么应该打开它,并且宏应该在那里运行。

我做了什么:

Application excel = new Application() { Visible = true };
excel.Workbooks.Open(pathToExcelXlsmFile);
excel.Run("MyMacro", parameter);

这将打开一个新的 Excel,从 pathToExcelXlsmFile 复制内容并运行宏。 我如何实现这两个场景?

我正在运行 core6。我尝试这样做来查看工作簿是否处于活动状态,但它似乎不起作用。

excel = (Application)Marshal2.GetActiveObject("Excel.Application");
excel.Workbooks[pathToExcelXlsmFile];         // Doesn't work
excel.Workbooks.Items[pathToExcelXlsmFile];   // Doesn't work
excel.Workbooks.get_Item[pathToExcelXlsmFile];// Doesn't work
c# excel ms-access com excel-interop
1个回答
0
投票

我用的是:

string FilePath [ = Ofd.FileName ];
Excel.Application excel = new Excel.Application();
Excel.Workbook wb = excel.Workbooks.Open(FilePath, 0, true, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);

if (null == wb)
{
  MessageBox.Show(string.Format("Excel Workbook '{0}' can't open...", FilePath));
}
© www.soinside.com 2019 - 2024. All rights reserved.