การอ่านอาร์กิวเมนต์จากคำสั่งลำดับ

Visual Basic for Applications:
การอ่านอาร์กิวเมนต์จากคำสั่งลำดับ

วิธีการ:

ไม่เหมือนกับสภาพแวดล้อมการเขียนโปรแกรมที่ตรงไปตรงมากว่า VBA ไม่มีคุณลักษณะในตัวเพื่ออ่านอาร์กิวเมนต์บรรทัดคำสั่งโดยตรงในแง่ปกติ เพราะมันถูกออกแบบมาสำหรับการฝังภายในแอพพลิเคชัน Microsoft Office อย่างไรก็ตาม ด้วยความคิดสร้างสรรค์เล็กน้อย เราสามารถใช้ Windows Script Host (WSH) หรือเรียก API ภายนอกเพื่อบรรลุฟังก์ชันค์ที่คล้ายกัน ต่อไปนี้เป็นแนวทางปฏิบัติโดยใช้ WSH:

  1. สร้างไฟล์ VBScript เพื่อส่งอาร์กิวเมนต์ไปยัง VBA:

    ขั้นแรก เขียนไฟล์ VBScript (yourScript.vbs) ที่ทำการเปิดแอพพลิเคชัน VBA ของคุณ (เช่น แมโคร Excel) และส่งอาร์กิวเมนต์บรรทัดคำสั่งไป:

Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open "C:\YourMacroWorkbook.xlsm"
objExcel.Run "YourMacroName", WScript.Arguments.Item(0), WScript.Arguments.Item(1)
objExcel.Quit
  1. เข้าถึงอาร์กิวเมนต์ใน VBA:

    ในแอพพลิเคชัน VBA ของคุณ (YourMacroWorkbook.xlsm), ปรับเปลี่ยนหรือสร้างแมโคร (YourMacroName)เพื่อยอมรับพารามิเตอร์:

Sub YourMacroName(arg1 As String, arg2 As String)
    MsgBox "Argument 1: " & arg1 & " Argument 2: " & arg2
End Sub
  1. รันสคริปต์ของคุณ:

    ทำการรัน VBScript จากบรรทัดคำสั่ง โดยส่งอาร์กิวเมนต์ตามที่ต้องการ:

cscript yourScript.vbs "Hello" "World"

สิ่งนี้ควรทำให้แมโคร VBA ของคุณถูกทำการอ้างอิงด้วยอาร์กิวเมนต์ “Hello” และ “World” แสดงผลในกล่องข้อความ

การศึกษาลึก:

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

วิธีการที่ได้กล่าวมาข้างต้น ถึงแม้จะมีประสิทธิภาพ แต่เป็นเพียงวิธีแก้ปัญหามากกว่าการให้บริการแบบดั้งเดิม ใช้การสคริปต์ภายนอกเพื่อเชื่อมต่อช่องว่าง วิธีนี้สามารถนำเข้าความซับซ้อนและประเด็นความปลอดภัยอาจเกิดขึ้นเนื่องจากต้องการให้เปิดใช้งานแมโครและอาจต้องปรับลดการตั้งค่าความปลอดภัยเพื่อการปฏิบัติการ

สำหรับงานที่พึ่งพาอาร์กิวเมนต์บรรทัดคำสั่งอย่างหนักหรือต้องการการรวมเข้ากับระบบปฏิบัติการ Windows อย่างราบรื่น ภาษาโปรแกรมอื่นๆ เช่น PowerShell หรือ Python อาจนำเสนอโซลูชันที่เข้มแข็งและปลอดภัยมากขึ้น ทางเลือกเหล่านี้ให้การสนับสนุนอาร์กิวเมนต์บรรทัดคำสั่งโดยตรงและเหมาะสมกว่าสำหรับแอพพลิเคชันหรือสคริปต์แบบอิสระที่ต้องการข้อมูลจากภายนอกเพื่อดัดแปลงพฤติกรรมของพวกเขาอย่างไดนามิก