我有一個程序,從Excel中讀取數據並將數據寫入Excel文件。我需要將命令從Excel文件發送到C#程序(例如,從Excel中捕獲F9並在C#程序中獲取它)從excel文件發送命令到一個c#程序
我正在使用Microsoft.Office.Interop.Excel框架。
我該怎麼辦呢?>
我有一個程序,從Excel中讀取數據並將數據寫入Excel文件。我需要將命令從Excel文件發送到C#程序(例如,從Excel中捕獲F9並在C#程序中獲取它)從excel文件發送命令到一個c#程序
我正在使用Microsoft.Office.Interop.Excel框架。
我該怎麼辦呢?>
你可能就需要調用本地的Win32方法來添加一個消息鉤子尋找在Excel窗口字符的消息。
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;
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
我不知道確切的答案..但我敢肯定,你會需要使用Win API,因爲Interop不具備捕獲密鑰的功能。 – 2011-04-04 15:07:24
看起來F9符合「計算所有打開的工作簿中的所有工作表」。無論你在做什麼,它可能會用不同的方法做得更乾淨。你應該通過檢測這個命令來提供你想要完成的細節。 – Reinderien 2011-04-04 16:46:08