Khi bạn muốn sử dụng chức năng từ các ứng dụng khác, bạn phải quyết định xem bạn muốn sử dụng liên kết sớm hay muộn của các biến đối tượng.

Ràng buộc sớm

Ràng buộc giữa biến đối tượng và đối tượng diễn ra khi ứng dụng được biên dịch.

Điều này dẫn đến hiệu suất tốt hơn so với khi liên kết diễn ra khi ứng dụng được chạy (liên kết muộn).

Nếu bạn muốn tạo một ràng buộc sớm, bạn phải đặt một tham chiếu đến thư viện đối tượng “ngoại lai” mà bạn muốn sử dụng.

Điều này được thực hiện từ VBE bằng cách sử dụng menu Tools, References …​. Khi một VBProject có tham chiếu đến thư viện đối tượng, bạn có thể khai báo các biến đối tượng cụ thể (ví dụ: Dim oDoc As Word.Document). Điều này cũng sẽ giúp lập trình các “đối tượng ngoại lai” dễ dàng hơn vì VBE sẽ hiển thị cùng một trợ giúp lập trình liên quan đến các thuộc tính, phương thức và sự kiện mà nó hiển thị cho các đối tượng thuộc ứng dụng bạn đang làm việc (VBE đã tự động thêm tham khảo trước ứng dụng này).

Đây là một ví dụ mã chung hiển thị lỗi tự động hóa vba:

Sub OLEAutomationEarlyBinding()

' replace xxx with one of the following:

' Access, Excel, Outlook, PowerPoint or Word

Dim oApp As xxx.Application ' early binding

Dim oDoc As xxx.Document

' Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation, Word.Document

On Error Resume Next ' ignore errors

Set oApp = GetObject(, "xxx.Application")

' reference an existing application instance

If oApp Is Nothing Then ' no existing application is running

Set oApp = New xxx.Application ' create a new application instance

End If

On Error GoTo 0 ' resume normal error handling

If oApp Is Nothing Then ' not able to create the application

MsgBox "The application is not available!", vbExclamation

End If

With oApp

.Visible = True ' make the application object visible

' at this point the application is visible

' do something depending on the application...

Set oDoc = .Documents.Open("c:\foldername\filename.doc")

' open a document

'        ...

oDoc.Close True ' close and save the document

.Quit ' close the application

End With

Set oDoc = Nothing ' free memory

Set oApp = Nothing ' free memory

End Sub

Ràng buộc muộn

Ràng buộc giữa biến đối tượng và đối tượng diễn ra khi ứng dụng được chạy.

Điều này dẫn đến hiệu suất chậm hơn so với khi liên kết diễn ra khi ứng dụng được biên dịch (liên kết sớm).

Nếu bạn không thêm tham chiếu đến thư viện đối tượng thuộc ứng dụng “nước ngoài”, bạn phải khai báo các biến đối tượng chung (ví dụ: Dim oDoc As Object). Điều này sẽ gây khó khăn hơn cho việc lập trình các “đối tượng ngoại lai” vì VBE sẽ không hiển thị cùng một trợ giúp lập trình liên quan đến các thuộc tính, phương thức và sự kiện mà nó hiển thị cho các đối tượng thuộc ứng dụng bạn đang làm việc.

Đây là một ví dụ mã chung:

Sub OLEAutomationLateBinding()

' replace xxx with one of the following:

' Access, Excel, Outlook, PowerPoint or Word

Dim oApp As Object ' late binding

Dim oDoc As Object ' late binding

On Error Resume Next ' ignore errors

Set oApp = GetObject(, "xxx.Application")

' reference an existing application instance

If oApp Is Nothing Then ' no existing application is running

Set oApp = CreateObject("xxx.Application")

' create a new application instance

End If

On Error GoTo 0 ' resume normal error handling

If oApp Is Nothing Then ' not able to create the application

MsgBox "The application is not available!", vbExclamation

End If

With oApp

.Visible = True ' make the application object visible

' at this point the application is visible

' do something depending on the application...

Set oDoc = .Documents.Open("c:\foldername\filename.doc")

' open a document

'        ...

oDoc.Close True ' close and save the document

.Quit ' close the application

End With

Set oDoc = Nothing ' free memory

Set oApp = Nothing ' free memory

End Sub