2011-04-04 71 views
4

我有一個程序,從Excel中讀取數據並將數據寫入Excel文件。我需要將命令從Excel文件發送到C#程序(例如,從Excel中捕獲F9並在C#程序中獲取它)從excel文件發送命令到一個c#程序

我正在使用Microsoft.Office.Interop.Excel框架。

我該怎麼辦呢?>

+1

我不知道確切的答案..但我敢肯定,你會需要使用Win API,因爲Interop不具備捕獲密鑰的功能。 – 2011-04-04 15:07:24

+1

看起來F9符合「計算所有打開的工作簿中的所有工作表」。無論你在做什麼,它可能會用不同的方法做得更乾淨。你應該通過檢測這個命令來提供你想要完成的細節。 – Reinderien 2011-04-04 16:46:08

回答

0

你可能就需要調用本地的Win32方法來添加一個消息鉤子尋找在Excel窗口字符的消息。

1

excel應用程序界面還提供了一些excel函數的事件,例如,

Microsoft.Office.Interop.Excel.Application: 

    // 
    // Summary: 
    //  Occurs after any worksheet is recalculated or after any changed data is plotted 
    //  on a chart. 
    event AppEvents_SheetCalculateEventHandler SheetCalculate; 
0

oferyo,

你好。你沒有提到你需要處理什麼樣的數據量?或者是類型,或者(像這樣的問題:'發送'到目標Excel文件的東西是包含圖形還是數據?)。

您沒有提及您正在使用的C#版本,但您可以考慮從嵌入或添加到原始Excel電子表格中的VBA腳本中調用Web服務?

MSDN article on calling WebServices from within VBA

我不記得如何下探VBA代碼插入Excel電子表格中的特定事件(如重新計算/按F9),但我認爲這應該是微不足道的。

如果您使用的是C#3.5或更高版本,則可以在應用程序內託管WCF服務......但我會建議更好地描述該問題,因爲它可能是VBA-> WCF/WebService-> Application解決方案可能會嚴重過度設計?

希望這有助於你想想你有VBA內選項...

問候,

Aidanapword

相關問題