Lưu ý: Hàm, phương pháp, đối tượng hoặc thuộc tính được mô tả trong chủ đề này bị tắt nếu dịch vụ biểu thức Microsoft Jet đang chạy trong chế độ sandbox, ngăn không cho đánh giá các biểu thức không an toàn tiềm ẩn. Để biết thêm thông tin về chế độ sandbox, hãy tìm kiếm "chế độ sandbox" trong trợ giúp.

Trả về một tham chiếu đến một đối tượng được cung cấp bởi một cấu phần ActiveX.

Cú pháp

GetObject ([tên đường dẫn] [ , lớp ] )

Cú pháp hàm GetObject có các đối số sau đây:

Đối số

Mô tả

tên đường dẫn

Tùy chọn. Biến thể (chuỗi). Đường dẫn đầy đủ và tên của tệp có chứa đối tượng để truy xuất. Nếu được bỏ qua tên đường dẫn, lớp học là bắt buộc.

lớp

Tùy chọn. Biến thể (chuỗi). Một chuỗi đại diện cho lớp của đối tượng.


Lớp tham đối sử dụng các appnamecú pháp.objetttype và có các phần sau đây:

Phần

Mô tả

tên người dùng

Bắt buộc. Biến thể (chuỗi). Tên của ứng dụng này cung cấp đối tượng.

objetttype

Bắt buộc. Biến thể (chuỗi). Loại hoặc lớp của đối tượng để tạo.


Chú thích

Lưu ý: Các ví dụ sau thể hiện cách sử dụng hàm này trong mô-đun Visual Basic for Applications (VBA). Để biết thêm thông tin về cách làm việc với VBA, chọn Tham khảo dành cho Nhà phát triển trong danh sách thả xuống cạnh Tìm kiếm, rồi nhập một hoặc nhiều từ vào hộp tìm kiếm.

Sử dụng hàm GetObject để truy nhập một đối tượng ActiveX từ một tệp và gán đối tượng cho biến số đối tượng. Sử dụng câu lệnh Set để gán đối tượng trả về bởi GetObject đến biến đối tượng. Ví dụ:

Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

Khi mã này được thực thi, ứng dụng liên kết với tên đường dẫn đã xác định là bắt đầu và đối tượng trong tệp đã chỉ định được kích hoạt.

Nếu tên đường dẫn là một chuỗi độ dài bằng không (""), GetObject trả về một phiên bản đối tượng mới của loại đã xác định. Nếu đối số tên đường dẫn được bỏ qua, GetObject trả về một đối tượng hiện hoạt hiện tại của loại đã xác định. Nếu không có đối tượng nào của loại đã xác định, thì lỗi xảy ra.

Một số ứng dụng cho phép bạn kích hoạt một phần của tệp. Thêm dấu chấm than (!) vào cuối tên tệp và theo dõi nó bằng một chuỗi xác định một phần của tệp mà bạn muốn kích hoạt. Để biết thêm thông tin về cách tạo chuỗi này, hãy xem tài liệu hướng dẫn cho ứng dụng đã tạo đối tượng.

Ví dụ, trong một ứng dụng vẽ, bạn có thể có nhiều lớp để vẽ được lưu trữ trong tệp. Bạn có thể sử dụng mã sau đây để kích hoạt một lớp trong một bản vẽ có tên là SCHEMA.CAD:

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

Nếu bạn không xác định lớpcủa đối tượng, tự động xác định ứng dụng để bắt đầu và đối tượng kích hoạt, dựa trên tên tệp mà bạn cung cấp. Tuy nhiên, một số tệp có thể hỗ trợ nhiều hơn một lớp của đối tượng. Ví dụ, một bản vẽ có thể hỗ trợ ba loại đối tượng khác nhau: một đối tượng ứng dụng , đối tượng vẽ và đối tượng thanh công cụ , tất cả đều là một phần của cùng một tệp. Để xác định đối tượng nào trong tệp bạn muốn kích hoạt, hãy dùng đối số Class tùy chọn. Ví dụ:

Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
"FIGMENT.DRAWING")

Trong ví dụ, FIGMENT là tên của một ứng dụng vẽ và DRAWING là một trong các kiểu đối tượng nó hỗ trợ.

Sau khi một đối tượng được kích hoạt, bạn tham chiếu nó trong mã bằng cách dùng biến đối tượng mà bạn đã xác định. Trong ví dụ trước, bạn truy nhập thuộc tính và phương pháp của đối tượng mới bằng cách sử dụng MyObjectbiến đổi đối tượng. Ví dụ:

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

Lưu ý:  Sử dụng hàm GetObject khi có một phiên bản hiện tại của đối tượng hoặc nếu bạn muốn tạo đối tượng với tệp đã được tải. Nếu không có ví dụ hiện tại và bạn không muốn đối tượng bắt đầu bằng tệp được tải, hãy dùng hàm CreateObject .

Nếu một đối tượng đã đăng ký chính nó như một đối tượng đơn, chỉ có một ví dụ về đối tượng được tạo ra, bất kể có bao nhiêu thời gian được thực thi. Với một đối tượng một ví dụ, GetObject luôn trả về cùng một phiên bản khi gọi với cú pháp bằng chuỗi độ dài bằng 0 (""), và nó gây ra lỗi nếu tham đối tên đường dẫn được bỏ qua. Bạn không thể sử dụng GetObject để có được một tham chiếu đến lớp được tạo bằng Visual Basic.

Ví dụ

Ví dụ này sử dụng hàm GetObject để có được một tham chiếu đến một trang tính Microsoft Office Excel 2007 cụ thể (MyXL). Nó sử dụng thuộc tính ứng dụng của trang tính để làm cho Excel Hiển thị, để đóng nó, v.v. Sử dụng hai cuộc gọi API, thủ tục phụ DetectExcel sẽ tìm kiếm Excel và nếu nó đang chạy, hãy nhập nó vào bảng đối tượng đang chạy. Cuộc gọi đầu tiên đến GetObject gây ra lỗi nếu Microsoft Excel không đang chạy. Trong ví dụ, lỗi sẽ làm cho cờ hiệu quả được đặt là true. Cuộc gọi thứ hai đến GetObject xác định một tệp để mở. Nếu Excel hiện không đang chạy, cuộc gọi thứ hai sẽ khởi động và trả về một tham chiếu đến trang tính được đại diện bởi tệp được chỉ định, mytest.xls. Tệp phải tồn tại trong vị trí đã xác định; Nếu không, lỗi tự động hóa lỗi Visual Basic sẽ được tạo ra. Tiếp theo, mã ví dụ làm cho cả Excel và cửa sổ chứa trang tính được chỉ định Hiển thị. Cuối cùng, nếu không có phiên bản Excel trước đây đang chạy, mã sẽ sửdụng phương phápquiđịnh của đối tượng ứng dụng để đóng Excel. Nếu ứng dụng đã chạy, không có nỗ lực nào được thực hiện để đóng nó. Tham chiếu chính nó được phát hành bằng cách đặt nó thành không có gì.

' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
ByVal wParam as Long, _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Variable to hold reference
' to Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Flag for final release.
' Test to see if there is a copy of Microsoft Excel already running.
On Error Resume Next ' Defer error trapping.
' GetObject function called without the first argument returns a
' reference to an instance of the application. If the application isn't
' running, an error occurs.
Set MyXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Clear Err object in case error occurred.
' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
DetectExcel
' Set the object variable to reference the file you want to see.
Set MyXL = GetObject("c:\vb4\MYTEST.XLS")
' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
Do manipulations of your file here.
' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' Release reference to the
' application and spreadsheet.
End Sub
Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
Const WM_USER = 1024
Dim hWnd As Long
' If Excel is running this API call returns its handle.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Sub
Else
' Excel is running so use the SendMessage API
' function to enter it in the Running Object Table.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub

Bạn cần thêm trợ giúp?

Phát triển các kỹ năng của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Microsoft Office nội bộ

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?

Cảm ơn phản hồi của bạn!

×