หมายเหตุ: ฟังก์ชัน วิธีการ วัตถุ หรือคุณสมบัติที่อธิบายไว้ในหัวข้อนี้จะถูกปิดใช้งานถ้า Microsoft Jet Expression Service ทํางานในโหมด Sandbox ซึ่งจะป้องกันการประเมินนิพจน์ที่อาจไม่ปลอดภัย สําหรับข้อมูลเพิ่มเติมเกี่ยวกับโหมด Sandbox ให้ค้นหา "โหมด Sandbox" ในวิธีใช้
สร้างและส่งกลับการอ้างอิงไปยังวัตถุ ActiveX
ไวยากรณ์
CreateObject ( class [, servername] )
ไวยากรณ์ของฟังก์ชัน CreateObject มีอาร์กิวเมนต์ดังนี้
อาร์กิวเมนต์ |
คำอธิบาย |
คลาส |
จำเป็น ตัวแปร (สตริง) ชื่อโปรแกรมประยุกต์และคลาสของวัตถุที่จะสร้าง |
ชื่อเซิร์ฟเวอร์ |
ไม่จำเป็น ตัวแปร (สตริง) ชื่อของเซิร์ฟเวอร์เครือข่ายที่วัตถุจะถูกสร้างขึ้น ถ้า ชื่อเซิร์ฟเวอร์ เป็นสตริงว่าง ("") คอมพิวเตอร์ภายในจะถูกใช้ |
คลาส อาร์กิวเมนต์ ใช้ชื่อแอปไวยากรณ์objecttype และมีส่วนเหล่านี้:
ส่วน |
คำอธิบาย |
ชื่อแอป |
จำเป็น ตัวแปร (สตริง) ชื่อของแอพลิเคชันที่จัดหาวัตถุ |
ชนิดวัตถุ |
จำเป็น ตัวแปร (สตริง) ชนิดหรือ คลาส ของวัตถุที่จะสร้าง |
ข้อสังเกต
ทุกแอปพลิเคชันที่สนับสนุนการทํางานอัตโนมัติจะมีวัตถุอย่างน้อยหนึ่งชนิด ตัวอย่างเช่น แอปพลิเคชันประมวลผลคําอาจมีวัตถุ Application วัตถุเอกสาร และวัตถุ Toolbar
เมื่อต้องการสร้างวัตถุ ActiveX ให้กําหนดวัตถุที่ส่งกลับโดย CreateObject ให้กับ ตัวแปรวัตถุ ดังนี้
หมายเหตุ: ตัวอย่างต่อไปนี้จะสาธิตการใช้ฟังก์ชันนี้ในโมดูล Visual Basic for Applications (VBA) สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการทํางานกับ VBA ให้เลือก การอ้างอิงสําหรับนักพัฒนา ในรายการดรอปดาวน์ที่อยู่ถัดจาก ค้นหา แล้วใส่คําอย่างน้อยหนึ่งคําในกล่องค้นหา
' Declare an object variable to hold the object
' reference. Dim as Object causes late binding. Dim ExcelSheet As Object Set ExcelSheet = CreateObject("Excel.Sheet")
ในตัวอย่างนี้ เราจะทําให้วัตถุสเปรดชีต Excel จากภายในฐานข้อมูล Access เป็นอัตโนมัติ โค้ดนี้จะเริ่มต้นโปรแกรมประยุกต์ที่สร้างวัตถุ ในกรณีนี้ คือสเปรดชีต Microsoft Excel เมื่อวัตถุถูกสร้างขึ้น คุณจะอ้างอิงวัตถุนั้นในโค้ดโดยใช้ตัวแปรวัตถุที่คุณกําหนด ในตัวอย่างต่อไปนี้ คุณจะเข้าถึงคุณสมบัติและวิธีการของวัตถุใหม่โดยใช้ตัวแปรวัตถุ ExcelSheetและวัตถุ Excel อื่นๆ รวมถึงวัตถุ Application และคอลเลกชัน Cells
' Make Excel visible through the Application object.
ExcelSheet.Application.Visible = True ' Place some text in the first cell of the sheet. ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1" ' Save the sheet to C:\test.xls directory. ExcelSheet.SaveAs "C:\TEST.XLS" ' Close Excel with the Quit method on the Application object. ExcelSheet.Application.Quit ' Release the object variable. Set ExcelSheet = Nothing
การประกาศตัวแปรวัตถุด้วยส่วนคําสั่ง As Object จะสร้างตัวแปรที่สามารถมีการอ้างอิงไปยังวัตถุชนิดใดก็ได้ อย่างไรก็ตาม การเข้าถึงวัตถุผ่านตัวแปรนั้นจะถูกผูกไว้ล่าช้า นั่นคือ การเข้าเล่มจะเกิดขึ้นเมื่อโปรแกรมของคุณรัน เมื่อต้องการสร้างตัวแปรออบเจ็กต์ที่ให้ผลลัพธ์ในการเข้าเล่มก่อนนั่นคือการผูกข้อมูลเมื่อโปรแกรมถูกคอมไพล์ ให้ประกาศตัวแปรออบเจ็กต์ที่มีรหัสคลาสเฉพาะ ตัวอย่างเช่น คุณสามารถประกาศและสร้างการอ้างอิง Excel ต่อไปนี้:
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook Dim xlSheet As Excel.WorkSheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1)
การอ้างอิงผ่านตัวแปรแรกเริ่มสามารถให้ประสิทธิภาพการทํางานที่ดีขึ้น แต่สามารถมีการอ้างอิงถึง คลาส ที่ระบุใน การประกาศ เท่านั้น
คุณสามารถส่งผ่านวัตถุที่ส่งกลับโดยฟังก์ชัน CreateObject ไปยังฟังก์ชันที่คาดว่าวัตถุจะเป็นอาร์กิวเมนต์ ตัวอย่างเช่น โค้ดต่อไปนี้สร้างและส่งผ่านการอ้างอิงไปยังวัตถุ Excel.Application:
Call MySub (CreateObject("Excel.Application"))
คุณสามารถสร้างวัตถุบนคอมพิวเตอร์ที่มีเครือข่ายระยะไกลโดยการส่งชื่อของคอมพิวเตอร์ไปยังอาร์กิวเมนต์ชื่อเซิร์ฟเวอร์ของ CreateObject ชื่อนั้นเหมือนกับส่วน ชื่อเครื่อง ของชื่อที่ใช้ร่วมกัน: สําหรับการใช้ร่วมกันที่ชื่อว่า "\\MyServer\Public" ชื่อเซิร์ฟเวอร์ คือ "MyServer"
หมายเหตุ: โปรดดูเอกสารประกอบ COM (ดูที่ Microsoft Developer Network) สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการทําให้แอปพลิเคชันสามารถมองเห็นได้บนคอมพิวเตอร์บนเครือข่ายระยะไกล คุณอาจต้องเพิ่มรีจิสทรีคีย์สําหรับแอปพลิเคชันของคุณ
โค้ดต่อไปนี้จะส่งกลับหมายเลขรุ่นของอินสแตนซ์ของ Excel ที่ทํางานบนคอมพิวเตอร์ระยะไกลที่ชื่อ MyServerดังนี้
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MyServer") Debug.Print xlApp.Version
ถ้าไม่มีเซิร์ฟเวอร์ระยะไกลอยู่หรือไม่สามารถใช้งานได้ จะเกิดข้อผิดพลาดขณะทํางาน
หมายเหตุ: ใช้ CreateObject เมื่อไม่มีอินสแตนซ์ปัจจุบันของวัตถุ ถ้าอินสแตนซ์ของวัตถุกําลังทํางานอยู่แล้ว อินสแตนซ์ใหม่จะเริ่มต้นขึ้น และวัตถุของชนิดที่ระบุจะถูกสร้างขึ้น เมื่อต้องการใช้อินสแตนซ์ปัจจุบัน หรือเพื่อเริ่มแอปพลิเคชันและโหลดไฟล์ ให้ใช้ฟังก์ชัน GetObject
ถ้าวัตถุได้ลงทะเบียนตัวเองเป็นวัตถุอินสแตนซ์เดียว อินสแตนซ์เดียวของวัตถุจะถูกสร้างขึ้นไม่ว่าจะดําเนินการ CreateObject กี่ครั้งก็ตาม
ตัวอย่าง
ตัวอย่างนี้ใช้ฟังก์ชัน CreateObject เพื่อตั้งค่าการอ้างอิง (
xlApp
) ไปยัง Excel ซึ่งใช้การอ้างอิงเพื่อเข้าถึงคุณสมบัติ Visible ของ Excel แล้วใช้เมธอด Quit ของ Excel เพื่อปิด สุดท้าย การอ้างอิงจะถูกปล่อยออกมา
Dim xlApp As Object ' Declare variable to hold the reference.
Set xlApp = CreateObject("excel.application") ' You may have to set Visible property to True ' if you want to see the application. xlApp.Visible = True ' Use xlApp to access Microsoft Excel's ' other objects. xlApp.Quit ' When you finish, use the Quit method to close Set xlApp = Nothing ' the application, then release the reference.