ฟังก์ชัน CreateObject

นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

หมายเหตุ

ฟังก์ชัน วิธีการ วัตถุ หรือคุณสมบัติที่อธิบายไว้ในหัวข้อนี้จะถูกปิดใช้งานถ้า Microsoft Jet Expression Service ทํางานในโหมด Sandbox ซึ่งจะป้องกันการประเมินนิพจน์ที่อาจไม่ปลอดภัย สําหรับข้อมูลเพิ่มเติมเกี่ยวกับโหมด Sandbox ให้ค้นหา "โหมด Sandbox" ในวิธีใช้

สร้างและส่งกลับการอ้างอิงไปยังวัตถุ ActiveX

ไวยากรณ์

CreateObject(class [, servername] )

ไวยากรณ์ของฟังก์ชัน CreateObject มีอาร์กิวเมนต์ดังนี้

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

    

อาร์กิวเมนต์คลาสใช้ไวยากรณ์ appname.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.