2013-07-25 5 views
1

У меня есть таблица Excel, которая контролирует рыночную цену определенных ценных бумаг.Создание отдельного процесса Excel

Я получаю эту рыночную цену от Bloomberg, и эти ценности меняются все время, пока рынок открыт.

У меня есть простой инструмент VBA, который посылает мне предупреждение каждый раз, когда риск нарушается.

К сожалению, я запускаю несколько электронных таблиц Excel в течение дня, а иногда, когда появляется предупреждение, мои другие макросы перестают работать.

Итак, я думаю, если это возможно, чтобы написать что-то в C#, где я могу запустить этот инструмент excel в фоновом режиме как совершенно другой процесс, который не мешает ни одной из моих других книг Excel, которые открыты.

+0

вы говорите все ExcelSheets, которые находятся в разных файлах замерзнуть ? или все они являются частью одного и того же файла Excel? –

ответ

0

Предлагаю использовать Microsoft.Office.Interop.Excel для реализации кода в C#.

Используя вышеупомянутое NameSpace, вы получаете полный доступ к объектной модели Excel, а затем можете контролировать различные ячейки.

Код для чтения файла Excel с использованием C# осуществляется через Интернет.

Хорошая новость: приложение C# будет работать в другом потоке ваших файлов Excel и не будет мешать им.

Вместо того, чтобы пытаться написать инструмент для запуска вашего инструмента Excel в фоновом режиме, лучший подход - написать инструмент в C# для реализации его логики.

0

Каждый макрос должен работать независимо (если только некоторые из его действий не затрагивают другие книги). То же самое для C#. При работе с Excel в C# вам нужно полагаться на Excel Object/Application, и вы можете создать столько, сколько пожелаете; каждый объект Excel связан с файлом Workbook/Excel. Вы можете обращаться с некоторыми из этих объектов параллельно без каких-либо проблем (эквивалентно, как это должно быть в случае с VBA -> возможно, вам нужно просмотреть код в своих макросах).

Here у вас есть пример кода из MSDN, показывающий, как автоматизировать Excel с помощью C#.

Если запустить небольшой код ниже этих строк, вы увидите два файла 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; 
     } 
    } 
} 
Смежные вопросы