创build一个单独的Excel进程

我有一个Excel电子表格来监控某些证券的市场价格。

我从彭博市场得到这个市场价格,只要市场开放,这些价值就会一直变化。

我有一个简单的VBA工具,每次发生危险时都会向我发送警报。

不幸的是,我在白天运行多个Excel电子表格,有时当警报出现时,我的其他macros停止工作。

所以我想如果它可能写在C#的东西,我可以在后台运行这个Excel工具作为一个完全不同的过程,不会干扰我的任何其他Excel工作簿,是开放的。

我build议使用Microsoft.Office.Interop.ExcelC#实现您的代码。

使用上面的NameSpace,您可以获得对Excel模型的完全访问权限,然后可以监视不同的单元格。

使用C#读取Excel文件的代码遍布互联网。

好消息是C#应用程序将运行在Excel文件的不同线程中,并且不会影响它们。

而不是试图编写一个工具来在后台运行你的Excel工具,更好的方法是用C#编写一个工具来实现它的逻辑。

每个macros都应该独立工作(除非其中的一些操作包括精确影响其他工作簿)。 同样的事情为C#。 在C#中处理Excel时,您必须依赖Excel Object/Application并且可以根据需要创build多个Excel Object/Application 。 每个Excel对象都与工作簿/ Excel文件相关联。 您可以并行处理这些对象中的一些,而不会出现任何问题(相当于VBA的情况 – >也许您必须查看macros中的代码)。

这里有一个来自MSDN的示例代码,展示了如何使用C#自动化Excel。

如果你在这些行下面运行小代码,你会看到两个不同的Excel文件,你可能会以你想要的方式影响:

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Microsoft.Office.Interop.Excel; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string path = @"path to first Excel file"; string path2 = @"path to second Excel file"; Microsoft.Office.Interop.Excel.Application oXL = new Microsoft.Office.Interop.Excel.Application(); Workbook oWB = oXL.Workbooks.Open(path, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); Worksheet oSheet = (Worksheet)oWB.ActiveSheet; Microsoft.Office.Interop.Excel.Application oXL2 = new Microsoft.Office.Interop.Excel.Application(); Workbook oWB2 = oXL2.Workbooks.Open(path2, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); Worksheet oSheet2 = (Worksheet)oWB2.ActiveSheet; oXL.Visible = true; oXL2.Visible = true; oXL = null; oXL2 = null; } } }