2015-05-15 77 views
2

工作我開始一份新工作 - 我的第一個 - 作爲財務總監。這項工作對於excel文件來說意味着很多,例如格式化一個文檔,以便它可以被SAP等其他財務程序導入和理解,或者用文檔中的數據創建圖表。可能有許多具體的任務,vb.net/vba可以有用,所以我真的很擅長。我應該用vb.net還是VBA?主要與Excel文件

我的問題是,我應該通過Visual Studio或vba通過Excel做vb.net嗎?我的理解是,你可以在excel文件方面實現基本相同的事情,但也許vba更快,更容易學習和使用。另一方面,Vb.net通過Visual Studio擁有更好的IDE,並且學習它會給我一種在其他地方更有用的知識。它是否正確?我不希望在一段時間之後發現其中一個我應該與另一個一起走,我希望從一開始就把它做好。

+5

即使這個問題不適合堆棧溢出,我認爲您應該儘快與VBA一起使用Excel文件 - 非常用於財務控制。 VBA for Excel已經基於Excel對象模型,而VB.NET是一種通用語言。所以,即使VB.NET(恕我直言)比VBA更強大,在你的情況下,VBA更容易使用,特別是分發(你只發送Excel文件,沒有安裝包)。但是如果你想在.NET上學習一些在其他地方更有用的東西,而不是VB.NET,我會去C#。 –

+0

同意上面的Matteo。 VBA是適合這項工作的最佳工具,但最有可能的是,從長遠來看,尤其是如果您離開了Excel世界,您將需要這兩者。如果由於VBA的限制而陷入死衚衕,那麼下一步就是.NET 。所以我最初會分配80%的時間學習VBA和20%的時間.NET。當你在VBA中變得更有能力時,你可以分配更多的時間到.NET。 – Ioannis

+0

謝謝大家的回覆!我不確定在這裏發佈這個問題,但我也認爲最好的答案將來自這裏。好的,所以VBA就是要走的路。上週我在excel中嘗試了一些VBA,並且在完成其他編程之後,我真的對IDE不太友好或可定製的IDE感到沮喪。有沒有什麼可以做的,例如使用另一個IDE進行VBA開發? – sika

回答

3

我使用VBA和VB.Net,所以我會建議學習。

學習VBA比學習VB.Net更容易,因爲學習的次數少得多。我發現VBA教程更容易掌握,主要是因爲大多數VB.Net教程似乎更關心展示VB.net的驚人功能,而不是教你使用該語言的基礎知識。一旦你擁有VBA,VB.Net的學習曲線就不會太陡。

您可以從VB.Net使用可從2003年以後的任何Excel版本讀取和寫入的interop訪問Excel工作簿。它可能能夠訪問早期版本,但我不知道誰使用早期版本,因此無法測試。交互很慢。如果你的程序除了處理Excel工作表外什麼都不做,你最好使用VBA。

VB.Net的窗體比VBA有更多的控制。如果你想創建一個有吸引力,靈活,可調整的用戶界面,那麼VB.Net是你可以選擇的。

VB.Net被編譯爲一種即時語言,然後在運行時將其編譯爲機器代碼,以充分利用正在運行的機器的功能。 VBA編譯爲在運行時解釋的即時語言。對於繁重的處理,VB.Net程序的速度可能比VBA宏快數千倍。

VB.Net創建可執行程序(MyProgram.exe),它可以在任何Windows機器上運行,以便在必要時輕鬆分發。 VBA宏在Excel中運行,因此用戶需要打開Excel並運行它們。

總結:從VBA開始,但在掌握語法後再嘗試VB.Net。

+0

謝謝,託尼!好吧,我將從VBA開始。 IDE太糟糕了。我將嘗試在我的64位上安裝Office 32位以使用MZ工具,這可能會改進IDE。 – sika

+2

我還建議[Rubberduck](https://github.com/retailcoder/Rubberduck)作爲一個很好的工具來幫助解決VBA的一些問題。 – FreeMan

+1

@sika MZ-Tools是一個不錯的附加組件,但請注意[Rubberduck](http://www.rubberduck-vba.com)適用於32位和64位Office,並添加了您會發現的功能當你在VB.NET中工作時,例如單元測試和重構工具(提取方法,重命名,..更多的方法),找到所有引用,代碼檢查等等。我有點偏見(我擁有和維護Rubberduck),但我發現MZ-Tools的大部分功能都是鈴聲和口哨。 –

0

錯誤。 VBA在運行過程中速度要快得多。所有的呼叫被編組成網絡協議,以便跨進程發送。

另外,您必須使用VBA加載COM。要使用Excel,您必須加載COM。要將VB.NET與Excel一起使用,您需要加載COM和.NET,這是一個更大的資源負載。

代碼將幾乎相同。

相關問題