2010-11-09 83 views
2

我有大量用VBA編寫的代碼,需要遷移到.Net應用程序。從.net應用程序運行vba代碼

這是不切合實際的改寫這一切,因爲實在太多了,所以我在想,如果有一種方法來調用這些VBA函數從.NET

感謝。

更新:

我一直在調查這些和事實證明,他們是不恰當的。該應用程序不是Microsoft Office,並且不公開任何類型的「運行」宏功能。

通過比較我們的傳統第三方應用程序和示例記事本應用程序生成的文件,文件格式(在記事本中查看)看起來非常相似(前幾個字符相同,總體佈局相同),所以我想知道是否有可能使用這個項目加載/保存功能來訪問宏。

我已經做了一些基本的測試,試圖將我們現有的vba加載到記事本vba中不起作用。我猜我需要更新應用程序的界面,但不幸的是,似乎不可能再獲得VBA許可協議,因爲微軟決定每個人都應該使用VSTA--所以我不確定最好的方法繼續進行此操作。

假設沒有辦法將VBA集成到我們的新應用程序中,我唯一剩下的想法是在傳統應用程序中創建一個新的VBA函數,它在application_start或periodic_execute入口點上調用,並且能夠設置所需的全局變量並調用其他函數,但是我仍然希望有更好的東西。

任何想法歡迎! :)

+0

「太多」是多少?哪個VBA平臺?微軟Office? MS Excel? AutoCAD的?理性玫瑰? ... – 2010-11-09 12:05:49

+0

約15,000個項目的價值,我可以參考這些項目的應用程序創建的.vba文件 – 2010-11-16 12:01:24

回答

2

我這裏假設你的VBA代碼包含在Microsoft Office應用程序之一。

所有Microsoft Office應用程序公開Application.Run()方法,該方法接受 宏或子過程的名稱。宏或子過程必須聲明爲Public。

您可以使用.Net代碼創建相關Office應用程序(Word,Excel等)的實例,然後通過調用Run方法調用宏或Sub過程,將宏/過程名稱作爲字符串傳遞論點例如

objWordApp.Run("MyVBAMacro") 

Run方法還接受一些參數,它們可以包含需要提供給宏或過程的任何參數的值。

這個MSDN article包含一些例子。