หมายเหตุ
ฟังก์ชัน วิธีการ วัตถุ หรือคุณสมบัติที่อธิบายไว้ในหัวข้อนี้จะถูกปิดใช้งานถ้า Microsoft Jet Expression Service กําลังทํางานในโหมด Sandbox ซึ่งจะป้องกันการประเมินนิพจน์ที่อาจไม่ปลอดภัย สําหรับข้อมูลเพิ่มเติมเกี่ยวกับโหมด Sandbox ให้ค้นหา "โหมด Sandbox" ในวิธีใช้
สร้างและส่งกลับการอ้างอิงไปยังวัตถุ ActiveX
ไวยากรณ์
CreateObject(class [, servername] )
ไวยากรณ์ของฟังก์ชัน CreateObject มีอาร์กิวเมนต์ดังนี้
| อาร์กิวเมนต์ | คำอธิบาย |
|---|---|
| คลาส | จำเป็น ตัวแปร (สตริง) ชื่อแอปพลิเคชันและคลาสของวัตถุที่จะสร้าง |
| ServerName | ไม่จำเป็น ตัวแปร (สตริง) ชื่อของเซิร์ฟเวอร์เครือข่ายที่จะสร้างวัตถุขึ้น ถ้า ชื่อเซิร์ฟเวอร์ เป็นสตริงว่าง ("") คอมพิวเตอร์ท้องถิ่นจะถูกใช้ |
อาร์กิวเมนต์คลาสใช้ไวยากรณ์ appname.objecttype และมีส่วนต่างๆ ดังนี้:
| ส่วน | คำอธิบาย |
|---|---|
| AppName | จำเป็น ตัวแปร (สตริง) ชื่อของแอปพลิเคชันที่ทําให้เกิดวัตถุ |
| objecttype | จำเป็น ตัวแปร (สตริง) ชนิดหรือคลาสของวัตถุที่จะสร้าง |
ข้อสังเกต
ทุกแอปพลิเคชันที่สนับสนุนระบบอัตโนมัติจะมีวัตถุอย่างน้อยหนึ่งชนิด ตัวอย่างเช่น แอปพลิเคชันประมวลผลคําอาจมีวัตถุ Application วัตถุ Document และวัตถุ 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 สร้างตัวแปรที่สามารถมีการอ้างอิงไปยังวัตถุชนิดใดก็ได้ อย่างไรก็ตาม การเข้าถึงวัตถุผ่านตัวแปรนั้นจะถูกผูกมัดล่าช้า นั่นคือ การผูกจะเกิดขึ้นเมื่อโปรแกรมของคุณทํางาน เมื่อต้องการสร้างตัวแปรวัตถุที่มีผลในการผูกก่อนกําหนด หรือการผูกเมื่อโปรแกรมถูกคอมไพล์ ให้ประกาศตัวแปรวัตถุด้วย ID คลาสที่ระบุ ตัวอย่างเช่น คุณสามารถประกาศและสร้างการอ้างอิง 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)
การอ้างอิงผ่านตัวแปร Early Bound อาจให้ประสิทธิภาพการทํางานที่ดีขึ้น แต่สามารถมีได้เฉพาะการอ้างอิงไปยังคลาสที่ระบุในการประกาศเท่านั้น
คุณสามารถส่งวัตถุที่ส่งกลับโดยฟังก์ชัน 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 จะใช้การอ้างอิงเพื่อเข้าถึงคุณสมบัติ ที่มองเห็นได้ ของ Excel แล้วใช้วิธีการ ออกจาก 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.