您現在的位置是:首頁 > 垂釣

VB、VBA、VB.NET、VSTO、這四胞胎,你分清了嗎?

  • 由 探索3000 發表于 垂釣
  • 2021-11-18
簡介NET(VB

vb中 是什麼意思

Visual Basic(簡稱

VB

是Microsoft公司開發的一種通用的基於物件的程式設計語言,為結構化的、模組化的、面向物件的、包含協助開發環境的事件驅動為機制的視覺化程式設計語言。

VB是微軟曾經大力推薦過的程式語言,微軟創始人比爾蓋茨非常鍾情於Basic程式語言。這種語言整合在Visual Studio開發套件中打包釋出,從VB1。0版發展到VB6版本,後來被號稱VB殺手的delphi打敗,停止更新。這種語言以開發快速、上手快著稱。使用者可以非常快速的設計出標準windows窗體介面。它可以在windows系統綠色化執行,無需安裝,因為它是微軟官方語言,系統中已經自帶了msvbvm60。dll之類的執行時支援庫。注意它的名稱中有個vm,大家也可以把它理解成vb的執行虛擬機器。

VB、VBA、VB.NET、VSTO、這四胞胎,你分清了嗎?

VBA(Visual Basic for Applications)

是Visual Basic的一種宏語言,主要能用來擴充套件Windows的應用程式功能,特別是Microsoft Office軟體,它也可以用於其他支援VBA的環境中。

VBA是VB的一個子集。必須寄生於已有的應用程式,不能編譯成EXE可執行檔案,也不離開宿主環境獨立執行。比如excel中的VBA,它就不能離開excel環境獨立執行。

而VB是完整的編譯語言,內部程式碼經過編譯成exe後解釋執行,執行速度更快,可以離開宿主環境獨立執行,應用面更廣。VBA程式碼比如模組、類模組可以簡單改動成為VB的模組

VB、VBA、VB.NET、VSTO、這四胞胎,你分清了嗎?

比較以上兩者,我們就發現VBA相對於VB來說功能上都弱很多。如果從VBA向VB方向遷移,可以發現很多相似之處,升級成本最小。

VB、VBA、VB.NET、VSTO、這四胞胎,你分清了嗎?

上圖就是我用VB製作的一個讀取EXCEL表格資料的演示程式。後期我將基於這個框架,分享一些VB操作excel的示例。有同學說VBA這麼好,這麼方便,為什麼不用VBA?我的意見是VBA程式碼和資料混雜在一起,比如一個表格中有表格資料也有VBA程式碼,這些VBA程式碼容易被使用者以宏安全性為由關閉,再說這種方法也不符合程式碼和資料分離的原則。我前面也發過一些圖文,大家看我做的那些工具需要演示資料嗎?

程式碼和資料是可以分離的。

VB。NET是整合在Visual studio。NET開發套件中的一種語言,與它相伴成生的還有C #。微軟官方推薦首選C#,但是為吸引更多VB老使用者,仍然保留了VB語言在Visual studio。NET平臺中,VB。NET從此擺脫了鄙視鏈低端角色,平步青雲,成為完全面向物件的新語言。依託於。NET平臺,或者說依賴net framework框架,VB。net獲得了長足發展。

VSTO

(Visual Studio Tools for Office )是VBA的替代,是。NET時代的VBA,它使用VB。net語言或者C#語言編寫更加高大止的office addin外接程式,模板和工作簿。VSTO以編譯後的方式釋出,執行時依賴於net framework框架+VSTO環境。

VB、VBA、VB.NET、VSTO、這四胞胎,你分清了嗎?

上圖為VS2012環境中編寫VSTO的起始頁。

Visual Basic 。NET(VB。NET)是在。NET Framework上實現的面向物件的計算機程式語言。 雖然它是經典的Visual Basic語言的演變,但是它不相容VB6,在任何舊版本編寫的程式碼不能在VB。NET下編譯。

像所有其他。NET語言一樣,VB。NET完全支援面向物件的概念。 VB。NET中的一切都是一個物件,包括所有的基本型別(Short,Integer,Long,String,Boolean等)和使用者定義的型別,事件,甚至是程式集。 所有物件從基類Object繼承。

VB。NET是由Microsoft的。NET框架實現的。 因此,它可以完全訪問。Net框架中的所有庫。 也可以在Mono上執行VB。NET程式,Mono是。NET的開源替代軟體,不僅在Windows下,甚至在Linux或Mac OSX上。

VB、VBA、VB.NET、VSTO、這四胞胎,你分清了嗎?

上圖是我使用VBNET開發Excel的一個演示,它引用了我自己編寫的一個excel類,程式碼只兩行

Dim v As New excel

v(“工作簿2。xlsx”)(“sheet1”)(4, 5) = “df45df”

建立excel物件,並把工作簿2。xlsx的sheet1工作表中的第4行第5列單元格中寫入“df45df“字串,當然這個自建excel類還可以完成更多完成,由於整合度更高,所以很多功能雖然只一句程式碼,但是後面可能有100句程式碼在執行。這就是積木疊加的增量效果。

用VB6代替VBA,升級成本最小,如果在適用夠用的情況下,VB6完全能勝任excel開發。但VB6太老了,很多新功能都不支援,需要加裝很多第三方支援。

VB。net一行程式碼效率勝過VB很多行,這也是很多開發者轉向VSTO的原因 。

VSTO相對於VB。NET,類似於VBA相對於VB6

這四胞胎同宗同源,系出同門。它們之間的差異,你分清了嗎?

Top