หมายเหตุ: ฟังก์ชัน วิธีการ วัตถุ หรือคุณสมบัติที่อธิบายไว้ในหัวข้อนี้จะถูกปิดใช้งานถ้า Microsoft Jet Expression Service เรียกใช้ในโหมด Sandbox ซึ่งป้องกันการประเมินนิพจน์ที่อาจไม่ปลอดภัย ดูข้อมูลเพิ่มเติมเกี่ยวกับโหมด Sandbox ค้นหา "โหมด Sandbox" ในวิธีใช้
สร้างและส่งกลับการอ้างอิงไปยังวัตถุ ActiveX
ไวยากรณ์
CreateObject ( class [, servername] )
ไวยากรณ์ ของฟังก์ชัน CreateObject มีอาร์กิวเมนต์ดังนี้
อาร์กิวเมนต์ | คำอธิบาย |
---|---|
คลาส |
จำเป็น ตัวแปร(สตริง ) ชื่อแอปพลิเคชันและคลาสของวัตถุเพื่อสร้าง |
servername |
ไม่จำเป็น ตัวแปร(สตริง ) ชื่อของเซิร์ฟเวอร์เครือข่ายที่วัตถุจะถูกสร้างขึ้น ถ้า ชื่อ เซิร์ฟเวอร์เป็นสตริงว่าง ("") คอมพิวเตอร์ภายในเครื่องจะถูกใช้ |
คลาสอาร์กิวเมนต์ใช้ชื่อแอปไวยากรณ์objecttype และมีส่วนต่างๆ ดังนี้:
ส่วน | คำอธิบาย |
---|---|
appname |
จำเป็น ตัวแปร(สตริง ) ชื่อของแอปพลิเคชันที่จัดหาวัตถุ |
objecttype |
จำเป็น ตัวแปร(สตริง ) ชนิดหรือ คลาส ของวัตถุที่จะสร้าง |
ข้อสังเกต
ทุกแอปพลิเคชันที่สนับสนุน Automation จะมีวัตถุอย่างน้อยหนึ่งชนิด ตัวอย่างเช่น แอปพลิเคชันประมวลผลข้อความอาจมีวัตถุ แอปพลิเคชัน วัตถุ เอกสาร และ วัตถุ แถบเครื่องมือ
เมื่อต้องการสร้างวัตถุ ActiveX ให้กําหนดวัตถุที่ส่งกลับโดย CreateObject ให้กับ ตัวแปรวัตถุ:
หมายเหตุ: ตัวอย่างที่ตามมาจะสาธิตการใช้ฟังก์ชันนี้ในโมดูล Visual Basic for Applications (VBA) For more information about working with VBA, select Developer Reference in the drop-down list next to Search and enter one or more terms in the search box.
' 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)
การอ้างอิงผ่านตัวแปรที่ถูกผูกไว้ก่อนเวลาสามารถให้ประสิทธิภาพที่ดีกว่า แต่สามารถมีการอ้างอิงไปยัง คลาส ที่ระบุไว้ใน การประกาศ เท่านั้น
คุณสามารถส่งวัตถุที่ส่งกลับโดยฟังก์ชัน 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 แล้วใช้วิธีการ ออกจาก 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.