ทำไม Microsoft ยังคงจัดส่ง VBA ภายในผลิตภัณฑ์ Office แทนที่จะรวม. NET โดยตรง? [ปิด]


12

ฉันรู้ว่าเป็นไปได้ที่จะเรียกรหัส. NET จากรหัส VBA ของคุณ แต่ทำไม VBA ยังคงมีอยู่? เหตุผลเดียวที่ฉันคิดได้ก็คือมรดก

ฉันต้องเรียงลำดับScripting.Dictionaryและจำนวนของรหัสที่ต้องการก็น่ากลัว

IDE ดูเหมือนว่า Visual Studio 2003 และมีรายละเอียดเล็ก ๆ น้อย ๆ มากมายที่ทำให้คุณเสียสติ (เช่นเปลี่ยนสายและได้รับคำเตือนเนื่องจากมีข้อผิดพลาดในการรวบรวม) หรือถ้าคุณเปิดสเปรดชีตมากกว่าหนึ่งแผ่นมันจะรวมเข้ากับคุณ "VBAProject" และนี่ทำให้เกิดความสับสนจริงๆ

การแบ่งโมดูล / classmodule / form ทั้งหมดนั้นไม่ได้แย่ขนาดนั้น แต่ฉันลงเอยด้วยการเขียนตรรกะในรูปแบบโดยตรงหรือมีโมดูลขนาดใหญ่ที่จัดการทุกอย่างได้

ทำไมฉันกด Alt + F11 ไม่ได้และแฮ็กใน C #


11
"เหตุผลเดียวที่ฉันคิดได้ก็คือมรดก" และนั่นไม่เพียงพอสำหรับคุณ
ร่าเริง

3
Microsoft เป็นราชาแห่งแอปพลิเคชั่นรุ่นเก่าและความเข้ากันได้ย้อนหลัง ... คำตอบอื่นใดที่น่าแปลกใจสำหรับฉันเนื่องจากนี่คือ Microsoft ที่เรากำลังพูดถึง

2
@ คิริลอาจเป็นไปได้ว่า "เราทำอย่างนั้นเสมอ"; เป็นไปได้ว่า "เราได้เปรียบเทียบจำนวนที่เราได้รับจากการทำลายความเข้ากันได้ย้อนหลังกับจำนวนที่เราสูญเสียไปและพบว่ามันไม่คุ้มค่า"
Doval

1
@Kiril - คำถามของคุณขอให้ส่ง Office ด้วย. NET "แทนที่จะ" ของ VBA ที่จะต้องทิ้งไว้
JeffO

3
@ คิริล: ตัวละครที่หลบมาก ๆ ก็มีความสุขมากที่ได้ฝังไฟล์ในเอกสาร แต่ไม่ใช่เพื่อประโยชน์ของคุณ
whatsisname

คำตอบ:


15

Microsoft Office มีหลายวิธีที่จะให้คุณเปลี่ยน / ปรับปรุงพฤติกรรมเริ่มต้นโดยทางโปรแกรม VBA เป็นภาษาทดสอบที่ผ่านการทดสอบพิสูจน์และแพร่กระจายอย่างกว้างขวางสำหรับการเขียนสคริปต์ใน doc ผู้คนในออฟฟิศจำนวนมากรู้จัก VBA และใช้มันในขณะที่พวกเขาไม่รู้จักภาษาการเขียนโปรแกรมที่ซับซ้อนเช่น C # Office จะไม่ถูกขายมากหากลูกค้าต้องเขียนเอกสารที่เปิดใช้งานมาโครเก่าซึ่งทำสิ่งสำคัญทางธุรกิจหลังจากที่พวกเขาเรียนภาษาใหม่หรืออะไรก็ตาม ความสามารถในการถอยหลังเป็นคุณสมบัติหลัก!

กอง. NET แบบเต็มสำหรับ Office น่าจะต้องมีชุดของการจัดการการพึ่งพา (dll: s, ฯลฯ ) และจะทำให้การจัดการงานง่าย ๆ เป็นเรื่องง่ายมาก - เป็นทางเลือกสำหรับการเขียนสคริปต์ที่มีน้ำหนักเบา VSTO ให้ความสามารถในการไปกับ C # แต่ในราคาวงจรการพัฒนาปลั๊กอินที่หนักกว่า

ผู้จัดการโปรแกรมไมโครซอฟท์ได้เขียนเกี่ยวกับเรื่องนี้ที่นี่ เป็นที่ชัดเจนว่า VBA นั้นและจะยังคงอยู่เพื่อจุดประสงค์ในการเขียนสคริปต์ขนาดเล็ก


คำอธิบายในบทความดีมาก ขอบคุณ
คิริล

6
ในฐานะอดีตพนักงานฉันสามารถเพิ่มได้ว่าลูกค้าบางรายจ่ายเงินจำนวนมากเพื่อให้มี Gates / Ballmer / Nadella ฯลฯ พร้อมใช้งานผ่านการโทรด่วนเช่นเดียวกับการแชทปกติและ VBA นั้นถือว่าสำคัญมากพอที่การเปลี่ยนแปลงใด ๆ ที่ทำลายพฤติกรรม VBA (โดยเฉพาะใน Excel และระหว่างเวอร์ชัน) ได้รับความสนใจอย่างรวดเร็ว นอกจากนี้ยังไม่ได้หมายความเพียงแค่สำหรับคนไร้ฝีมือ มีกองทัพของนักพัฒนามืออาชีพที่ใช้มัน C # ค่อนข้างเป็นที่ต้องการโดยทั่วไปกับ VBA ว่าเป็นความรู้ที่ใช้งานได้
James Snell

อาร์กิวเมนต์นี้ไม่ได้หยุด MS จากการเลิกวาง VB6 ปีที่ผ่านมาเพื่อสนับสนุน VB.Net ซึ่งทำลายรหัสจำนวนมาก
Mike Lowery

3

คำตอบคือ "มรดก" อย่างเคร่งครัด คำตอบคือ VBA ไม่ใช่ VB6 หรือ VB.Net: เป็น VBA แยก แต่ภาษาที่เกี่ยวข้อง หากแทนที่ VBA ด้วย VB.Net มันจะทำลายเอกสารจำนวนมากอย่างหลีกเลี่ยงไม่ได้

การแทนที่ VBA ด้วย VB.Net อาจทำให้ข้อมูลสูญหายอย่างแน่นอนสำหรับผู้ใช้จำนวนมากในผลิตภัณฑ์หลักของพวกเขา - ไม่ใช่สิ่งที่ดี

และตลาดเป้าหมายสำหรับ VBA ไม่ใช่โปรแกรมเมอร์


7
VBA เป็นลูกพี่ลูกน้องของ VB6 ความแตกต่างทางวัสดุเพียงอย่างเดียวคือสิ่งที่เกี่ยวข้องกับ API เช่น VBForms แทนแบบวัตถุ Excel หรือ Word คุณสามารถคัดลอก / วางรหัส VBA ไปยัง VB6 (หรือกลับกัน) และจะยังคงทำงานได้ 99 เปอร์เซ็นต์
Robert Harvey

3
การสนับสนุนสำหรับ VBA และ VB.Net/C# ไม่จำเป็นต้องไม่เกิดร่วมกัน
Joel Coehoorn

2

หากคุณพิจารณาว่าเหตุผลหลักที่คนซื้อ Office คือการรักษาความเข้ากันได้กับเอกสารที่มีอยู่ทั้งหมดซึ่งส่วนใหญ่มีมาโครและ VBA ในนั้นพวกเขาจะเป็น Microsoft ที่กล้าหาญมากในการปฏิบัติต่อผู้ใช้เหล่านั้น ดูดมันและเริ่มเขียนโค้ดใน. NET เพียงแค่ดูที่คำขอ uservoice อันดับ # 1 เลยทีเดียว !

ฉันคิดว่าพวก LibreOffice จะเชียร์ตัวเองโดยไม่รู้ตัว

VBA ใช้สำหรับเพิ่มผลผลิตใน Office ไม่ใช่ "การเขียนโปรแกรม" วันที่คุณต้องการพลังเพิ่มเติมจากเอกสารของคุณคือวันที่คุณจ้างโปรแกรมเมอร์เพื่อเขียนทุกอย่างใหม่ ฉันเดาอีกเหตุผลหนึ่งว่าทำไมมาโคร Visual Studio ไม่ใช่. NET - ลองคิดว่าวัตถุ devenv4 COM ไม่แตกต่างจาก VBA มากนัก


เขาไม่ได้ขอให้พวกเขาทิ้ง VBA เขาขอให้พวกเขามี. Net เป็นตัวเลือกเพิ่มเติม
Joel Coehoorn

1

ผมคิดว่ามีเล็กน้อย แต่สิ่งที่สำคัญที่แตกต่างระหว่างมรดกและความนิยม และเมื่อคุณทำสัญญาได้มากเท่าที่คุณมีคุณเรียนรู้ว่า VBA เป็นที่นิยมอย่างบ้าคลั่ง :) ฉันไม่สามารถบอกคุณได้ว่าสัญญาที่ฉันทำไว้กับ "Excel jockeys" ที่ไม่รู้จักเกี่ยวกับการเขียนโปรแกรม แต่อย่างใด สามารถบดขยี้ VBA ได้เหมือนเป็นเรื่องของชีวิตหรือความตาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.