ความแตกต่างระหว่างสองคืออะไร ฉันมักจะคิดว่า VBA นั้นเป็นรุ่น VB ที่ 'พิการ' แต่เมื่อเพื่อนถามฉันเมื่อวันก่อนฉันไม่รู้ว่าความแตกต่างที่แท้จริงคืออะไร
นอกจากนี้เมื่อคุณใช้เช่น Excel นั้น VB หรือ VBA นั้นคืออะไร
ความแตกต่างระหว่างสองคืออะไร ฉันมักจะคิดว่า VBA นั้นเป็นรุ่น VB ที่ 'พิการ' แต่เมื่อเพื่อนถามฉันเมื่อวันก่อนฉันไม่รู้ว่าความแตกต่างที่แท้จริงคืออะไร
นอกจากนี้เมื่อคุณใช้เช่น Excel นั้น VB หรือ VBA นั้นคืออะไร
คำตอบ:
สำหรับวัตถุประสงค์ในการเขียนโปรแกรมเกือบทั้งหมด VBA และ VB 6.0 เป็นสิ่งเดียวกัน
VBA ไม่สามารถคอมไพล์โปรแกรมของคุณให้เป็นไบนารีที่ปฏิบัติการได้ คุณจะต้องมีโฮสต์ (เช่นไฟล์ Word และ MS Word เป็นต้น) เพื่อเก็บและดำเนินโครงการของคุณ คุณจะไม่สามารถสร้าง COM DLLs ด้วย VBA ได้
นอกจากนั้นยังมีความแตกต่างใน IDE - VB 6.0 IDE นั้นมีประสิทธิภาพมากกว่าในการเปรียบเทียบ ในทางกลับกันคุณมีการรวมแอปพลิเคชันโฮสต์ใน VBA อย่างแน่นหนา แอปพลิเคชันทั่วโลกวัตถุ (เช่น "ActiveDocument") และเหตุการณ์พร้อมใช้งานโดยไม่มีการประกาศดังนั้นการเขียนโปรแกรมเฉพาะแอปพลิเคชันจึงตรงไปข้างหน้า
ถึงกระนั้นก็ไม่มีอะไรขัดขวางคุณจากการไล่ล่า Word โหลด VBA IDE และแก้ปัญหาที่ไม่เกี่ยวข้องกับ Word แต่อย่างใด ฉันไม่แน่ใจว่ามีอะไรที่ VB 6.0 สามารถทำได้ (ทางเทคนิค) และ VBA ไม่สามารถทำได้ ฉันกำลังมองหาแผ่นเปรียบเทียบใน MSDN ว่า
VBA ย่อมาจากVisual Basic สำหรับแอปพลิเคชันและดังนั้นจึงเป็นสคริปต์สคริปต์ "for applications" ขนาดเล็กของ VB VBA พร้อมใช้งานใน Excel แต่ยังอยู่ในแอปพลิเคชัน office อื่น ๆ
ด้วย VB ผู้ใช้สามารถสร้างแอปพลิเคชัน windows แบบสแตนด์อโลนซึ่งไม่สามารถทำได้ด้วย VBA
เป็นไปได้สำหรับนักพัฒนาอย่างไรก็ตาม "ฝัง" VBA ในแอปพลิเคชันของตนเองเป็นภาษาสคริปต์เพื่อทำให้แอปพลิเคชันเหล่านั้นเป็นแบบอัตโนมัติ
แก้ไข : จากคำถามที่พบบ่อย VBA :
Q. Visual Basic สำหรับแอปพลิเคชันคืออะไร
A. Microsoft Visual Basic สำหรับแอปพลิเคชัน (VBA) เป็นสภาพแวดล้อมการเขียนโปรแกรมแบบฝังที่ออกแบบมาเพื่อให้นักพัฒนาสามารถสร้างโซลูชันที่กำหนดเองโดยใช้พลังเต็มของ Microsoft Visual Basic นักพัฒนาที่ใช้แอพพลิเคชั่นที่โฮสต์ VBA สามารถทำให้การใช้งานแอพพลิเคชั่นอัตโนมัติและขยายขอบเขตการพัฒนาโซลูชันทางธุรกิจ
โปรดทราบว่า VB.NET เป็นภาษาอื่นที่แชร์ไวยากรณ์กับ VB เท่านั้น
ต่อไปนี้เป็นคำตอบทางเทคนิคที่ละเอียดยิ่งขึ้นสำหรับคำถามเก่า ๆ : Visual Basic สำหรับ Applications (VBA) และ Visual Basic (pre-.NET) ไม่ใช่แค่ภาษาที่คล้ายกัน แต่เป็นภาษาเดียวกัน โดยเฉพาะ:
ในหนังสืออ้างอิง VB เก่าที่ฉันพบเมื่อปีที่แล้วผู้เขียน (Paul Lomax) ถึงกับยืนยันว่า 'VBA' เป็นชื่อของภาษานั้นเสมอไม่ว่าจะใช้ในแอปพลิเคชันแบบสแตนด์อโลนหรือในบริบทที่ฝังตัว (เช่น MS Office ):
"ก่อนที่เราจะไปต่อไปเราจะมาอธิบายประเด็นพื้นฐานก่อนว่า Visual Basic for Applications (VBA) เป็นภาษาที่ใช้ในการเขียนโปรแกรมใน Visual Basic (VB) โดย VB เองนั้นเป็นสภาพแวดล้อมการพัฒนาองค์ประกอบภาษาของสภาพแวดล้อมนั้นคือ VBA "
ความแตกต่างเล็กน้อย
โฮสต์กับสแตนด์อะโลน : ในทางปฏิบัติศัพท์เมื่อคนส่วนใหญ่พูดว่า "VBA" พวกเขาหมายถึง "VBA เมื่อใช้ใน MS Office" โดยเฉพาะและพวกเขาพูดว่า "VB6" เพื่อหมายถึง "VBA ที่ใช้ใน VBA แบบสแตนด์อโลนรุ่นสุดท้าย คอมไพเลอร์ (เช่น Visual Studio 6) " IDE และคอมไพเลอร์ที่มาพร้อมกับ MS Office นั้นเกือบจะเหมือนกับ Visual Studio 6 โดยมีข้อ จำกัด ว่าจะไม่อนุญาตให้รวบรวมไฟล์ dll หรือ exe แบบสแตนด์อโลน ในทางกลับกันหมายความว่าคลาสที่กำหนดในโครงการ VBA แบบฝังไม่สามารถเข้าถึงได้จากผู้ใช้ COM ที่ไม่ได้ฝังตัวเนื่องจากไม่สามารถลงทะเบียนได้
การพัฒนาอย่างต่อเนื่อง : Microsoft หยุดผลิตคอมไพเลอร์ VBA แบบสแตนด์อโลนด้วย Visual Studio 6 เนื่องจากพวกเขาเปลี่ยนเป็นรันไทม์. NET เป็นแพลตฟอร์มที่ต้องการ อย่างไรก็ตามทีม MS Office ยังคงรักษา VBA และแม้กระทั่งปล่อยรุ่นใหม่ (VBA7) ด้วย VM ใหม่ (ตอนนี้เพิ่งเรียกว่า VBA7.dll) เริ่มต้นด้วย MS Office 2010 ข้อแตกต่างที่สำคัญคือ VBA7 มีทั้ง 32- และรุ่น 64 บิตและมีการปรับปรุงเล็กน้อยเพื่อจัดการกับความแตกต่างระหว่างทั้งสองโดยเฉพาะเกี่ยวกับการร้องขอ API ภายนอก
คุณต้องการเปรียบเทียบ VBA กับ VB-Classic (VB6 .. ) หรือ VB.NET หรือไม่
VBA (Visual Basic สำหรับแอปพลิเคชัน) เป็นภาษาสคริปต์ที่ใช้ vb-classic ซึ่งฝังอยู่ในแอปพลิเคชัน Microsoft Office ฉันคิดว่ามันเป็นคุณสมบัติทางภาษาคล้ายกับ VB5 (มันขาดฟังก์ชั่นบิวอินบางตัว) แต่:
คุณสามารถเข้าถึงเอกสาร office ที่คุณเขียน VBA-script ไว้เพื่อให้คุณสามารถทำได้เช่น
ตัวอย่าง: ตั้งค่าของเซลล์ excel
ActiveSheet.Cells("A1").Value = "Foo"
VBC และ -.NET ไม่ใช่ภาษาสคริปต์ คุณใช้พวกเขาเพื่อเขียนแอปพลิเคชันแบบสแตนด์อโลนที่มี IDE แยกต่างหากซึ่งคุณไม่สามารถทำได้กับ VBA (VBA- สคริปต์เพียง "มีอยู่" ใน Office)
VBA ไม่เกี่ยวข้องกับ VB.NET (พวกเขามีไวยากรณ์ที่คล้ายกัน)
ที่จริงแล้ว VBA สามารถใช้เพื่อคอมไพล์ DLLs ได้ รุ่น Office 2000 และ Office XP Developer ประกอบด้วยตัวแก้ไข VBA ที่สามารถใช้ในการสร้าง DLLs เพื่อใช้เป็น COM Addins
ฟังก์ชั่นนี้ถูกลบออกในรุ่นที่ใหม่กว่า (2003 และ 2007) ด้วยการถือกำเนิดของซอฟต์แวร์ VSTO (VS Tools สำหรับ Office) ถึงแม้ว่าคุณจะสามารถสร้าง COM addins ในรูปแบบที่คล้ายกันโดยไม่ต้องใช้ VSTO (หรือ VS.Net) โดย ใช้ VB6 IDE
มันเป็น VBA VBA หมายถึงVisual Basic สำหรับแอปพลิเคชันและใช้สำหรับแมโครในเอกสาร Office มันไม่สามารถเข้าถึงคุณสมบัติ VB.NET ดังนั้นมันจึงเป็นเหมือน VB6 รุ่นปรับปรุงที่มีส่วนเสริมเพื่อให้สามารถทำงานกับเอกสาร (เช่นแผ่นงานใน VBA สำหรับ Excel)
VB ไม่ได้ภาษา VB เป็นโปรแกรมที่โฮสต์ VBA เหมือนกับ Office โฮสต์ VBA VB เป็นชุดของวัตถุแอปเช่นเดียวกับ Word และ Excel และแพคเกจฟอร์มเช่นเดียวกับใน Office
ดังนั้นคุณสามารถเขียนโค้ด VBA ใน VB เท่านั้น
ป.ล.ข้อมูลนี้อยู่บนแท็บINFOในคำถาม VBหน้า VB สำหรับ VB
จากข้อมูล VBA
VBA 6 ได้รับการจัดส่งในปี 1998 และรวมถึงโฮสต์ที่ได้รับอนุญาตจำนวนมากซึ่ง ได้แก่ : Office 2000 - 2010, AutoCAD, Processbook ของ PI และ Visual Basic 6.0 แบบสแตนด์อโลน
VBA ย่อมาจาก Visual Basic สำหรับแอปพลิเคชันและการใช้งาน Visual Basic ที่มีวัตถุประสงค์เพื่อใช้ใน Office Suite
ความแตกต่างระหว่างพวกเขาคือ VBA ถูกฝังอยู่ภายในเอกสาร Office (คุณลักษณะของ Office) VB เป็นภาษาที่ใช้ในการพัฒนาแอพพลิเคชั่น
VB (Visual Basic ไม่เกิน 6.0) เป็นชุด VBA (Visual Basic สำหรับแอปพลิเคชัน) ฉันรู้ว่าคนอื่นมีความเข้าใจผิดเกี่ยวกับเรื่องนี้ แต่ความเข้าใจของฉันคือความหมาย (เช่นคำศัพท์) ของ VBA รวมอยู่ใน VB6 (ยกเว้นวัตถุเฉพาะสำหรับผลิตภัณฑ์ Office) ดังนั้น VBA จึงเป็นส่วนย่อยของ VB6 ไวยากรณ์ (เช่นลำดับที่เขียนคำ) เหมือนกันใน VBA เหมือนกับใน VB6 แต่ความแตกต่างคือวัตถุที่มีให้ VBA หรือ VB6 แตกต่างกันเพราะมีวัตถุประสงค์ที่แตกต่างกัน วัตถุประสงค์เฉพาะของ VBA คือการทำงานแบบเป็นโปรแกรมโดยอัตโนมัติที่สามารถทำได้ใน MS Office ในขณะที่จุดประสงค์ของ VB6 คือการสร้าง EXE มาตรฐาน, ตัวควบคุม ActiveX, ActiveX DLLs และ ActiveX EXEs ซึ่งสามารถทำงานเดี่ยว ๆ หรือในโปรแกรมอื่น ๆ เช่น MS Office หรือ Windows