2010-02-02 149 views
3

我有兩個電子表格(「舊」和「新」)和一個VB腳本宏。宏在一個(「新」)中運行,對另一個(「舊」)的內容進行比較,然後將結果輸出回「新」電子表格。如何爲Excel宏程序創建可執行應用程序?

我想建立一個可執行文件,我輸入兩個文件名並點擊一個運行按鈕來簡化這個過程。目前的程序需要打開這兩個文件,然後剪切並粘貼腳本到「New」的VB編輯器中並在那裏運行它。我正在尋找關於在Windows XP中使用哪種編程語言或工具創建此應用程序以針對Excel 2007中創建的電子表格運行的建議。

我可以使用C#編寫一個可以執行此操作的簡單應用程序嗎?

如果您可以指向我寫關於編寫C#應用程序與Excel進行交互的資源,我們將不勝感激。

這是我第一次嘗試編寫與Excel交互的應用程序。也許這是不可能的。如果是這種情況,請讓我知道。

回答

1

爲什麼不創建一個名爲 「Compare.Xls」,將使用下面的代碼到Excel文件允許用戶挑選文件並運行比較

Dim fd As FileDialog 
Dim sOldFile As String 
Dim sNewFile As String 

Set fd = Application.FileDialog(msoFileDialogOpen) 

    fd.AllowMultiSelect = False 

    MsgBox "Please Select the Old File" 
    fd.Show 
    Workbooks.Open fd.SelectedItems(1) 
    sOldFile = ActiveWorkbook.Name 

    MsgBox "Please Select the New File" 
    fd.Show 
    Workbooks.Open fd.SelectedItems(1) 
    sNewFile = ActiveWorkbook.Name 

它可以使用一些進一步的錯誤檢查,如確保用戶沒有選擇取消或按下文件對話框上的轉義,但它應該允許您在1個文件上創建一個按鈕,並在兩個用戶上運行該文件的比較選定的文件。

編輯:我只是想過這個,你可以在Workbook_Open下的ThisWorkbook中添加一個對你的宏的調用,並讓它在有人打開Compare.Xls時自動運行。

0

我在Open office org中定義了宏,我使用批處理文件從命令行執行宏。 並使用C#執行批處理文件。 使用ProcessStartInfo和Process Class。 您可能知道 您可以隱藏模式運行批處理文件,也可以從輸出流中獲取結果(如果有)。

0

也許你可以考慮寫一個「New」作爲excel模板,在實例化時運行一個打開「Old」的宏,比較並保存到新文檔中。

您也可以考慮使用Old作爲模板或者編寫一個新的模板「compare.xlt」,如其他答案中的建議。

相關問題