ทำไม Shell
ถึงไม่ทำงานใน VBScript ใน VS6?
หากคุณเคยทำงานกับ VBScript ใน Visual Studio 6 (VS6) คุณอาจพบกับอุปสรรคที่น่าผิดหวัง: type mismatch runtime error
เมื่อพยายามใช้คำสั่ง Shell
เพื่อเรียกใช้โปรแกรมภายนอก นี่อาจทำให้เกิดความสับสนโดยเฉพาะเมื่อคุณต้องการทำให้การทำงานของคุณมีประสิทธิภาพด้วยคำสั่งง่ายๆ ดังนั้น เหตุใด Shell
จึงไม่ทำงานตามที่คาดหวัง? มาลงรายละเอียดของปัญหานี้และสำรวจวิธีแก้ไขทีละขั้นตอนกัน
ปัญหา
ในโค้ดมาโครของคุณ อาจมีการพิมพ์อะไรที่คล้ายๆ กับนี้:
shell("p4 open " + ActiveDocument.FullName)
อย่างไรก็ตาม สิ่งนี้จะทำให้เกิดข้อผิดพลาด สาเหตุของความสับสนอยู่ที่ความแตกต่างระหว่าง VBScript และ Visual Basic (VB) แม้ว่าทั้งสองภาษาอาจมีความคล้ายคลึงกัน แต่ก็มีความแตกต่างที่สำคัญในด้านการใช้งานวัตถุและฟังก์ชันการทำงาน
ความเข้าใจเกี่ยวกับ VBScript และวัตถุ WScript
VBScript vs. Visual Basic
ตามที่ได้ชี้ให้เห็นในบทสนทนารอบๆ ปัญหานี้ VBScript ไม่เหมือนกับ Visual Basic ข้อสรุปที่สำคัญคือ VBScript มีชุดวัตถุในตัวที่จำกัด ตัวอย่างเช่น วัตถุในตัวเดียวใน VBScript คือ WScript
WScript.Echo "สวัสดี, โลก!"
วัตถุ WScript
นี้ทำหน้าที่เป็นรากฐานของลำดับชั้นโมเดลวัตถุของ Windows Script Host มันให้ฟังก์ชันพื้นฐาน แต่ไม่สามารถจัดการกับการดำเนินการขั้นสูง เช่น การเรียกใช้โปรแกรมภายนอกโดยตรงผ่านคำสั่ง Shell
วิธี CreateObject
เพื่อที่จะใช้วัตถุอื่นๆ ส่วนใหญ่ที่มีอยู่ใน VBScript คุณต้องสร้างมันขึ้นมาด้วยวิธี CreateObject
วัตถุ Shell เป็นหนึ่งใน “วัตถุอื่น ๆ” ที่ต้องการวิธีนี้ในการรัน
วิธีแก้ไข: การใช้ WScript.Shell
เพื่อที่จะเรียกใช้โปรแกรมภายนอกในมาโคร VS6 ของคุณอย่างสำเร็จ คุณจำเป็นต้องใช้วัตถุ WScript.Shell
นี่คือวิธีที่ถูกต้องในการทำ:
Dim wshShell
Set wshShell = CreateObject("WScript.Shell")
strResult = wshShell.Run("p4 open " + ActiveDocument.FullName)
การวิเคราะห์วิธีแก้ไข
-
ประกาศตัวแปร: เริ่มต้นด้วยการประกาศตัวแปร เช่น
wshShell
เพื่อเก็บวัตถุ Shell -
สร้างวัตถุ Shell: ใช้
Set wshShell = CreateObject("WScript.Shell")
เพื่อสร้างอินสแตนซ์ของวัตถุ Shell -
รันคำสั่ง: ใช้
wshShell.Run()
เมธอดเพื่อเรียกใช้คำสั่งที่คุณต้องการ ซึ่งในกรณีนี้คือ"p4 open " + ActiveDocument.FullName
สรุป
แม้ว่าขั้นตอนเพิ่มเติมเหล่านี้อาจดูไม่จำเป็นในตอนแรก การใช้วัตถุ WScript.Shell
ผ่าน CreateObject
เป็นสิ่งจำเป็นสำหรับการเรียกใช้แอปพลิเคชันภายนอกใน VBScript ภายใน Visual Studio 6 วิธีนี้สอดคล้องกับวิธีการที่ VBScript ถูกออกแบบมาและทำให้แน่ใจว่าโค้ดของคุณทำงานได้โดยไม่เกิดข้อผิดพลาดในการทำงาน
ด้วยการเข้าใจความแตกต่างระหว่าง VBScript และ Visual Basic คุณสามารถหลีกเลี่ยงความท้าทายเหล่านี้และทำให้ประสบการณ์การเขียนโค้ดของคุณดีขึ้น หากคุณกำลังทำงานกับมาโคร ความรู้เหล่านี้จะช่วยประหยัดเวลาและป้องกันความยุ่งยากในอนาคต
การใช้วัตถุที่ถูกต้องไม่เพียงทำให้ทักษะการเขียนโปรแกรมของคุณดีขึ้นแต่ยังช่วยเพิ่มประสิทธิภาพการทำงานของคุณอีกด้วย ขอให้สนุกกับการเขียนโค้ด!