㈠ VB和VBA詳細的區別都用在什麼地方
首先VBS不應該和VB、VBA放在一起比較,它是微軟按照自己定義的ActiveX Scripting規范完全從頭開始寫成的腳本語言,雖然它的語法結構和VB非常相似,但VBS僅僅依靠自動化對象來擴充其功能(只有後期綁定),它不能用implements來實現介面,不可能在VBS里直接使用API,沒有VarPtr這樣能得到指針的函數,而VBS缺少的這些功能正是VB和VBA所特有的。當然,這不是說VBS不如VB或VBA,Windows已經為VBS提供了足夠強大的功能,我們可以用VBS來做腳本COM組件,而且借自動化對象的能力VBS可以說能力無限,所以有病毒用VBS來寫,對程序員來說VBS最重要的功能莫過於可以給自己的軟體提供宏功能,就象VC中提供的VBS宏功能那樣。注意,VBS是Free的,這和在Office中使用VBA來提供宏功能不同,要集成VBA需要價格不低的許可證費用,關於腳本語言可參見MSDN中Platform SDK\Tools and Languages\Scripting。
那麼VB和VBA又有什麼不同呢?好吧,眼見為實,開始我們的實驗吧!
如果裝了Office 2000以上版本,那麼打開OLEVIEW,點擊File下的View TypeLib查看位於E:\Program Files\Common Files\Microsoft Shared\VBA\VBA6下的VBE6.dll的類型庫,再用同樣的方法看看MSVBVM60.dll的類型庫,你會發現它們的類型庫基本上一模一樣,除了VBE6多了一個VBEGlobal介面和實現這個介面的Global對象,這個Global對象我們也可以在VBA編程環境(比如用WORD的VB編輯器)中用對象瀏覽器看到。它有二個方法Load和UnLoad,還有一個UserForms屬性,這是因為VBA6使用MS Form 2.0 Form設計器(FM20.dll)來設計和使用UserForm窗體(而在VB6中,我們可以使用多個設計器。比如通過使用MS Form 2.0 Form設計器,我們就能在VB中使用VBA所使用的UserForm用戶窗體)。和VBA的Global對象類似,在VB中也有GLobal對象,從VB的對象瀏覽器中可以知道它在vb6.olb這個類型庫中,這個類型庫就是每個工程都必須引用的VB對象庫,所有的VB內置對象都在這里。而VBA的UserForm中使用的對象都在FM20.dll中。
除了上述不同外,VB和VBA還有一個最大的不同,就是VBA不能生成EXE可執行文件,但可以猜想在IDE環境中VBA和VB都要把代碼編譯成p-code來執行,後面我將用實驗來證明的確是這樣,雖然在具體的實現上VB和VBA有很大的不同。
從上面的分析上可以看到VB和VBA還是有很大不同的,這種不同主要體現在編程環境和對象結構上,但在本質上它們之間卻有著不可割捨的血源關系。如果剛才你仔細地觀察了MSVBVM60.dll的類型庫,你就會發現如下的片斷:
// Generated .IDL file (by the OLE/COM Object Viewer)
[
dllname("VBA6.DLL"),
uuid(35BFBDA0-2BCC-1069-82D5-00DD010EDFAA),
helpcontext(0x000f6ec4)
]
mole Strings {
[entry(0x60000000), helpcontext(0x000f665f)]
short _stdcall Asc([in] BSTR String);
[entry(0x60000001), helpcontext(0x000f6e9f)]
BSTR _stdcall _B_str_Chr([in] long CharCode);
……………
}
什麼?在MSVBVM60.dll中的對象其方法卻定義在VBA6.DLL中?!VB安裝目錄下不就有個VBA6.DLL嗎?再用OLEVIEW看看它,哇噻,真是想不到它居然和MSVBVM60.DLL的一模一樣。怎麼回事?趕快再拿出DEPEND來看看VBA6.dll、MSVBVM60.dll和VBE6.dll這三個DLL的輸出函數。哈,又有新發現,我們可以發現在三個DLL的輸出函數中從編號512到717絕大部分都是一模一樣的一些以rtc開頭的函數,比如595的rtcMsgBox(rtc是什麼?應該是Run Time Component? Control? Code?有誰知道嗎?),這說明三個DLL都有著相同的運行時VBA函數。
我們再用DEPEND來觀察一下VB6.EXE, 我們可以發現VB6.EXE引入了VBA6.DLL中一些它特有的以Eb和Tip開頭的函數,從這些函數的名稱上可以發現它們的功能都是IDE相關的,比如79的EbShowCode和82的TipDeleteMole。VB6.EXE恰恰沒有引入任何rtc開頭的函數(注意一)。我們再來看看MSVBVM60.DLL,隨便找一個用了MsgBox函數的編譯後的文件,用DEPEND來觀察它,就會發現它引入MSVBVM60.DLL輸出的595號rtcMsgBox函數(注意二)。並且引入MSVBVM60.DLL中很多以下劃線開頭的函數,比如__vbaVarAbs(注意三)。其實從這個三個"注意"中我們已經可以進行一些猜想,無論對錯,你可以先想想。
如果你沒有跟著我做實驗,而僅僅是看這篇文章的話,我猜想你應該有點昏了。如果你自己動手做了這些實驗,現在你應該充滿了疑問而急侍看到結論。所以請一定要親手試一試,學習研究問題的方法比看結論更重要。
到這里至少我們可以得出結論:VB和VBA本就是同宗的姐妹,只不過姐姐VB的功夫要比妹妹VBA歷害些。不過姐姐只會單打獨斗是女強人;妹妹卻只會傍大款。姐姐有生育能力,是真正的女人;妹妹卻不會生崽,但深譜相夫之道,一番教導指揮之下可使她老公增色不少,而VBS呢,也是大戶人家的女兒,不過沒有VB和VBA姐妹優秀的血統,嬌小玲瓏干不得粗活只能指揮些自動聽話的對象來幹活,她樂於助人品德好不象VBA那樣只認大款,VB、VBA、vbs三個女人我都喜歡。
㈡ 我是冷門的VBA程序員,我的這些能力到底值多少錢
1、嚴格開講只會VBA並不算一個程序員
2、沒有哪家IT公司已VBA作為主流開發語言
3、VBA只是作為一個二次開發的工具。很多軟體也支持別的語言作為二次開發
4、VBA更多的是非計算機專業的人用的。
㈢ VBA和java/C++等編程語言有什麼差別
我推薦先學習C語言,盡管很花時間,但是在學習其他衍生語言(包括java跟C++)都十分容易上手。計算機指令底層還是二進制,所以除了匯編,只有C語言最有效率。java太簡單了,沒有指針,沒有多態,垃圾自動回收,完全的面向對象。C++復雜一點,牽扯很多內存問題,C++開發的游戲運行效率高。java太過於基礎了,學會java很簡單,把java語言玩透就難了,沒有指針的語言要操作內存還要有運行效率,還是得首先學習C語言。C++不用說,開發大型軟體游戲就它最有效率(運行速度快,穩定),java就是免費開源(一切java的衍生品或者編譯器乃至擴展都是免費的),開發速度快,但是java運行效率及其低下。java學得再好也是編程行業的基礎人員,站在金字塔低端,再努力也分不了多少肉。程序員必須具備,英語6級水平(可讀可寫,看PDF如讀小說),數學高數水平。學C++以後免不了要學習物理跟數學3D建模,頂點運算,微積分。學java基本沒有門檻,但是沒有門檻的行業,擠破頭也沒多少用處
㈣ vba是身摸
* VBA一個關鍵特徵是你所學的知識在微軟的一些產品中可以相互轉化. * VBA可以稱作EXCEL的「遙控器」. VBA究竟是什麼?更確切地講,它是一種自動化語言,它可以使常用的程序自動化,可以創建自定義的解決方案. 此外,如果你願意,還可以將EXCEL用做開發平台實現應用程序. Office取得巨大成功的一個重要原因就是VBA,使用VBA可以完成很多事情,基於Excel、Word的VBA小程序不計其數。 VBA程序員很多是業余程序員,正因為業余,解決的卻是工作中需要解決的問題;所以,VBA程序大多都是只是在部門內部或個人使用的小工具。 集成了VBA的其他應用程序也很多,但真正能為程序增色的不多。 大多數人看到了VBA可以自動化一個程序,可以擴展已有程序,但沒有看到在Office中,VBA代碼可以是錄制的,而不是寫出來的,帶來的好處是,學習曲線變得非常緩。如果沒有宏錄制功能,要熟悉某個Office組件的對象模型,絕非一日之功。
參考文獻:網路:http://ke..com/view/88461.htm
㈤ 程序員為什麼瞧不起VBA編程
這只是一個用腳本的二次開發,不算是真正的編程,VB堪稱是最簡單的高級語言,VBA 只是VB的一部分,就更簡單了,不像其他面向對象的語言那樣的類呀,對象的,這個只能算是基於對象的腳本編程!好用就行, 能解決問題就行,沒必要在意這些!
可能他們弄了半天的工具,要弄UI,資料庫呀什麼的,用VBA +excel小段腳本就解決了!
㈥ 有專門從事VBA這項編程的嗎,工資多少
VBA這個,5年到8年工作經驗,在實體財務或類金融企業做report開發和設計,年薪20W到50W左右,僅做參考
㈦ 編寫VBA是程序員嗎
不是每個會編寫代碼的都是程序員,這有兩個層面,一個是專業,一個是業余。
至於怎麼去理解,每個人有每個人的不同看法,我個人認為,不管是不是程序員不重要,達到自己想要的效果,能幫到自己就行了。呵,雖然幫不上忙,來發下牢騷!
㈧ VB與VBA有什麼區別
轉自網路
--------------------------------
VBA
Visual Basic for Applications(VBA)是一種Visual Basic的一種宏語言,主要能用來擴展Windows的應用程式功能,特別是Microsoft Office軟體。也可說是一種應用程式視覺化的Basic Script。1994年發行的Excel 5.0版本中,即具備了VBA的宏功能。
VBA是什麼
直到90年代早期,使應用程序自動化還是充滿挑戰性的領域.對每個需要自動化的應用程序,人們不得不學習一種不同的自動化語言.例如:可以用EXCEL的宏語言來使EXCEL自動化,使用WORD BASIC使WORD自動化,等等.微軟決定讓它開發出來的應用程序共享一種通用的自動化語言--------Visual Basic For Application(VBA),可以認為VBA是非常流行的應用程序開發語言VISUAL BASIC 的子集.實際上VBA是寄生於VB應用程序的版本. VBA6
VBA和VB的區別包括如下幾個方面:
1. VB是設計用於創建標準的應用程序,而VBA是使已有的應用程序(EXCEL等)自動化 2. VB具有自己的開發環境,而VBA必須寄生於已有的應用程序. 3. 要運行VB開發的應用程序,用戶不必安裝VB,因為VB開發出的應用程序是可執行文件(*.EXE),而VBA開發的程序必須依賴於它的父應用程序,例如EXCEL. 盡管存在這些不同,VBA和VB在結構上仍然十分相似.事實上,如果你已經了解了VB,會發現學習VBA非常快.相應的,學完VBA會給學習VB打下堅實的基礎.而且,當學會在EXCEL中用VBA創建解決方案後,即已具備在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA創建解決方案的大部分知識. * VBA一個關鍵特徵是你所學的知識在微軟的一些產品中可以相互轉化. * VBA可以稱作EXCEL的「遙控器」. VBA究竟是什麼?更確切地講,它是一種自動化語言,它可以使常用的程序自動化,可以創建自定義的解決方案. 此外,如果你願意,還可以將EXCEL用做開發平台實現應用程序. Office取得巨大成功的一個重要原因就是VBA,使用VBA可以完成很多事情,基於Excel、Word的VBA小程序不計其數。 VBA程序員很多是業余程序員,正因為業余,解決的卻是工作中需要解決的問題;所以,VBA程序大多都是只是在部門內部或個人使用的小工具。 集成了VBA的其他應用程序也很多,但真正能為程序增色的不多。 大多數人看到了VBA可以自動化一個程序,可以擴展已有程序,但沒有看到在Office中,VBA代碼可以是錄制的,而不是寫出來的,帶來的好處是,學習曲線變得非常緩。如果沒有宏錄制功能,要熟悉某個Office組件的對象模型,絕非一日之功。 以ArcGIS為例,ArcGIS擴展必須使用ArcObject,不管是使用VBA也罷,VB也罷,還是C++也罷。但同時,ArcObject的學習不是一天兩天可以搞定,對於業余程序員,要使用VBA來擴展ArcGIS,幾乎沒有可能;專業程序員又不屑使用VBA;而對於公司,如果要基於ArcObject來擴展ArcGIS,選擇VBA意味著源碼的保護很困難。所以,ArcGIS的VBA就如同雞肋。 不過,學習AO的時候,使用VBA比使用其他語言要容易一些,寫幾行代碼,然後直接運行測試結果,這種互動式的學習應該是最好的學習方法。 ArcGIS以及AO與Office相比,還有一個很大的差別,就是ArcGIS缺乏中等粒度的對象,例如Word和Excel的Range對象。對於Office開發,可以在對底層小粒度對象一無所知的狀況下做很多事情,這就是抽象的力量。常人可以處理的復雜度是有限的,面對數十個對象和幾百個對象,後者需要付出的努力不是10倍,而是數十倍或更多,因為在學習過程中,必須可以把這些對象在大腦中很好的組織,以控制其復雜度。
Visual Basic for Applications(簡稱VBA)是新一代標准宏語言,是基於Visual Basic for Windows 發展而來的。它與傳統的宏語言不同,傳統的宏語言不具有高級語言的特徵,沒有面向對象的程序設計概念和方法。而VBA 提供了面向對象的程序設計方法,提供了相當完整的程序設計語言。VBA 易於學習掌握,可以使用宏記錄器記錄用戶的各種操作並將其轉換為VBA 程序代碼。這樣用戶可以容易地將日常工作轉換為VBA 程序代碼,使工作自動化。因此,對於在工作中需要經常使用Office 套裝軟體的用戶,學用VBA 有助於使工作自動化,提高工作效率。另外,由於VBA 可以直接應用Office 套裝軟體的各項強大功能,所以對於程序設計人員的程序設計和開發更加方便快捷。
㈨ 學vba有前途嗎
學vba有前途。
VBA(Visual Basic for Applications)是Visual Basic的一種宏語言,是在其桌面應用程序中執行通用的自動化(OLE)任務的編程語言。主要能用來擴展Windows的應用程序功能,特別是Microsoft Office軟體。它也可說是一種應用程式視覺化的 Basic 腳本。
1993年由微軟公司開發的應用程序共享一種通用的自動化語言--------即Visual Basic for Application(VBA),實際上VBA是寄生於VB應用程序的版本。1994年發行的Excel5.0版本中,即具備了VBA的宏功能。
VBA程序員很多是業余程序員,正因為業余,解決的卻是工作中需要解決的問題;所以,VBA程序大多都是只是在部門內部或個人使用的小工具。集成了VBA的其他應用程序也很多,但真正能為程序增色的不多。
大多數人看到了VBA可以自動化一個程序,可以擴展已有程序,但沒有看到在Office中,VBA代碼可以是錄制的,而不是寫出來的,帶來的好處是,學習曲線變得非常緩。如果沒有宏錄制功能,要熟悉某個Office組件的對象模型,絕非一日之功。
㈩ 先學習VB好還是學習VBA好
VBA與VB比起來也就多了個A,VB自然代表VB語言,A代表宿主程序提供的對像庫,如EXCEL提供的Application,也可稱為介面,vb語言是通過它處理EXCEL文檔的。
而網上能找到的關於VBA的教材都以介紹A為主,關於語法的問題是屬於VB語言事,所以自然先學VB了。
學好了VB,對EXCELVBA,用不著再系統的學習了,粗略了解一下EXCEL的對象庫就可以
還有,對機械專業更適合VB,EXCELVBA只局限於處理一些表格數據,比如定時採集某些儀器數據,並在窗口上動態的顯示曲線圖(像心電圖那樣),EXCELVBA明顯不好處理。反過來VB即使不打開EXCEL程序也能處理EXCEL表格。