image

Như tên cho thấy, chức năng CreateObject được sử dụng để tạo các đối tượng. Nhưng tại sao chúng ta sử dụng phương thức hoặc hàm CreateObject nếu chúng ta có thể tạo trực tiếp một đối tượng bằng cách sử dụng từ khóa mới? Đó là một câu hỏi hợp lệ và chúng tôi có một câu trả lời phù hợp. Việc tạo một đối tượng bằng CreateObject được gọi là Late Binding *. Trong quá trình ràng buộc muộn, việc tạo các đối tượng xảy ra trong thời gian chạy. Nó không cần bất kỳ tham chiếu nào được thêm vào. Điều này làm cho mã VBA có tính di động.

Ví dụ: nếu bạn tạo một ứng dụng giao dịch với các ứng dụng khác và bạn sử dụng ràng buộc sớm bằng cách thêm tham chiếu và sử dụng từ khóa * mới. Sau đó, bạn chuyển mã đó sang một số máy khác, thì bạn cũng sẽ phải thêm các tham chiếu trên máy đó.

Nhưng nếu bạn đã sử dụng phương thức CreateObject để tạo các đối tượng ứng dụng khác, bạn sẽ không cần thêm các tham chiếu trên các máy khác, trong trường hợp bạn chuyển hoặc chia sẻ mã.

Trong bài này, chúng ta sẽ tìm hiểu về phương thức CreateObject bằng một số ví dụ.

Cú pháp của Hàm CreateObject:

Set object_name= CreateObject(classname as string,[servername])

classname as string: Đây là một biến bắt buộc. Nó là một chuỗi đề cập đến tên của ứng dụng và loại đối tượng. Tên ứng dụng và lớp của đối tượng được tạo phải được khai báo trong AppName.ObjecType. Ví dụ, nếu tôi muốn một đối tượng của Ứng dụng Word thì tôi sẽ viết “Word.Application”. Chúng ta sẽ xem nó chi tiết trong các ví dụ sau.

[tên máy chủ]: Đây là một biến tùy chọn. Nó là một chuỗi tên của máy chủ mạng nơi đối tượng sẽ được tạo. Nếu tên máy chủ là một chuỗi trống (“”), máy cục bộ sẽ được sử dụng. Chúng tôi sẽ không sử dụng điều này trong chương này.

Bây giờ, chúng ta đã biết những điều cơ bản về hàm CreateObject, hãy sử dụng chúng trong một số ví dụ:

Ví dụ 1: Mở ứng dụng Microsoft Word bằng Excel VBA Vì vậy, nếu chúng ta muốn sử dụng liên kết sớm, chúng ta sẽ thêm tham chiếu đến các ứng dụng word bằng menu Công cụ → Tham chiếu.

image

Và mã của chúng tôi sẽ trông như thế này.

Sub OpenWordApp()

Dim wordApp As New Word.Application

Dim wordDoc As Document

wordApp.Visible = True

wordDoc = wordApp.Documents.Add

End Sub

Ưu điểm của mã này là bạn nhận được sự hỗ trợ của sự thông minh của VBA và nó hiển thị cho bạn phương thức và thuộc tính có sẵn của đối tượng mà bạn đã tạo. Nó sẽ hoạt động hoàn toàn tốt với hệ thống của bạn. Tuy nhiên, nếu bạn chia sẻ mã này cho người khác và họ chưa thêm tham chiếu vào thư viện microsoft word từ các công cụ, họ sẽ gặp lỗi.

image

Để tránh lỗi này, hãy sử dụng mã dưới đây.

Sub OpenWordApp()

Dim wordApp As Object



Set wordApp = CreateObject("Word.Application")



Dim wordDoc As Object

wordApp.Visible = True

Set wordDoc = wordApp.Documents.Add

End Sub

Đoạn mã trên sẽ hoạt động hoàn toàn tốt trên mọi máy tính. Nó có tính di động vì chúng ta đang thực hiện liên kết muộn bằng cách sử dụng phương thức CreateObject để tạo đối tượng.

Hãy xem một ví dụ khác:

Ví dụ 2: Tạo đối tượng sổ làm việc bằng chức năng CreateObject Nếu bạn đang làm việc với VBA trong bất kỳ khoảng thời gian nào, bạn phải tạo hoặc thêm vào sổ làm việc bằng cách sử dụng từ khóa Mới. Trong ví dụ này, chúng tôi sẽ làm như vậy bằng cách sử dụng CreateObject.

Sub addSheet()



' Declare an object variable to hold the object

' reference. Dim as Object causes late binding.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

' 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

End Sub

Vì vậy, các bạn, đây là cách bạn sử dụng phương thức CreateObject trong VBA. Hãy thảo luận về những lợi ích và thiếu sót của nó.

Ưu điểm của CreateObject để tạo đối tượng Ưu điểm chính của CreateObject là nó làm cho mã của bạn có thể di động (khi việc tạo đối tượng là mối quan tâm). Bạn có thể chia sẻ mã cho bất kỳ ai mà không cần lo lắng về việc họ có thêm tham chiếu vào chương trình đối tượng đang sử dụng hay không.

Thiếu sót của CreateObject

Những thiếu sót của phương thức CreateObject là:

Bạn cần biết cấu trúc của Lớp bạn sẽ sử dụng để tạo đối tượng.

Khi bạn đã tạo đối tượng, bạn hoàn toàn phụ thuộc vào bộ nhớ của mình đối với các phương thức và thuộc tính của đối tượng, vì VBA không cung cấp bất kỳ intellisense nào để giúp bạn.

Chúng tôi có thể khắc phục những thiếu sót trên. Tôi có một mẹo nhỏ.

Bất cứ khi nào tôi viết mã sẽ được chia sẻ cho người khác, tôi sử dụng phương pháp đầu tiên để tạo đối tượng (Thêm tham chiếu từ các công cụ). Điều này giúp tôi viết mã nhanh hơn. Khi tôi hoàn thiện chương trình VBA và đã kiểm tra nó, tôi thay thế Phương thức mới bằng Phương pháp CreateObject. Điều này làm cho mã di động. Bạn có thể sử dụng thủ thuật này.

Vì vậy, các bạn, đây là cách bạn có thể sử dụng chức năng CreateObject để tạo các đối tượng trong VBA. Tôi hy vọng tôi đã có thể giải thích mọi thứ. Nếu bạn có bất kỳ câu hỏi nào liên quan đến bài viết này hoặc bất kỳ câu hỏi nào khác liên quan đến VBA, hãy hỏi tôi trong phần bình luận bên dưới.

Bài viết liên quan:

Nó là một ngôn ngữ lập trình của Microsoft. Nó được sử dụng với các ứng dụng Microsoft Office như MSExcel, MS-Word và MS-Access trong khi các biến VBA là các từ khóa cụ thể.

Bạn muốn yêu cầu Excel không hiển thị cảnh báo này và xóa trang tính chết tiệt.

Bài viết phổ biến:

Chức năng Countif là cần thiết để chuẩn bị bảng điều khiển của bạn.