2013-08-30 115 views
2
  1. 我有一個C++程序,的Program.exe具有功能的doSomething()
  2. 代替的Program.exe具有邏輯調用doSomething的(),我需要但excel是決定何時調用這個doSomething()的前端 - 基於特定單元格的一些變化
  3. XML/CSV IO因爲決策制定是實時的,低延遲
  4. 所以我該如何去關於excel與program.exe的接口,以便excel調用doSomething()

我確實希望有人能指出我的方向。我使用QT 4.8.5來開發C++項目。 我一直在閱讀,但COM模型是非常新的我..我寫一個COM模型? DLL?Excel中調用C的函數++程序

如何讓COM/DLL「知道」該excel調用了它,從而提供某種「確認」,然後調用program.exe中的doSomething()?

+1

您正在使用Excel的實時應用程序? –

+0

是的..它是實時的 – mecher

回答

0

您可以從Excel中調用DLL函數。 因此,您有兩種可能性:

  • 將您的程序轉換爲DLL。
  • 如果這是不可能的,建立與程序通信(在一些IPC機制,如插座爲例)

對於細節的DLL,搜索網頁或再次詢問:-)

會如何COM/DLL「知道」 Excel有調用它,從而 提供某種形式的「確認」並依次調用 DoSomething的()中的Program.exe

Excel不調用DLL,它調用DLL中的函數(通過從VBA宏或電子表格公式調用它)。當這個函數執行時,它必須被某些東西調用(可能是Excel,除非你從別的地方調用它),所以它「知道」它被調用。它可以通過它的回報價值提供反饋以優化。要做到這一點

1

一種方法是創建一個包含你的函數doSomething一個DLL和MSDN文章中描述了從Excel中調用它:How to: Access DLLs in Excel

你也可以做一個COM組件,您的應用程序中。從Excel中訪問會更容易一些(特別是涉及到參數類型時),但是如果你從來沒有做過(而且你只需要調用一個函數),那麼試試「純粹的DLL」 「 - 先做。

0

PE文件(.exe)不會導出函數。然而,你可以用excel和參數來執行你的程序並使用結果(從程序讀入stdout到excel中)。

您可以使用宏來執行程序。但是,我拒絕編寫Visual Basic(或者爲此閱讀),所以很遺憾,我無法提供任何示例代碼。它應該很容易可用,如果你搜索一下。