image

이름에서 알 수 있듯이 CreateObject 함수는 개체를 만드는 데 사용됩니다. 그런데 new 키워드를 사용하여 객체를 직접 생성 할 수 있는데 왜 CreateObject 메서드 나 함수를 사용합니까? 글쎄, 그것은 유효한 질문이고 우리는 적절한 대답을 가지고 있습니다. CreateObject를 사용한 객체 생성을 Late Binding *이라고합니다. 후기 바인딩에서 개체 생성은 런타임에 발생합니다. 추가 할 참조가 필요하지 않습니다. 이렇게하면 VBA 코드를 이식 할 수 있습니다.

예를 들어, 다른 응용 프로그램을 처리하는 응용 프로그램을 만들고 참조를 추가하고 new * 키워드를 사용하여 초기 바인딩을 사용하는 경우입니다. 나중에 해당 코드를 다른 컴퓨터로 전송 한 다음 해당 컴퓨터에도 참조를 추가해야합니다.

그러나 다른 응용 프로그램 개체를 만들기 위해 CreateObject 메서드를 사용한 경우 코드를 전송하거나 공유하는 경우 다른 컴퓨터에 참조를 추가 할 필요가 없습니다.

이 기사에서는 몇 가지 예제를 사용하여 CreateObject 메서드에 대해 알아 봅니다.

CreateObject 함수 구문 :

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

classname as string : 필수 변수입니다. 응용 프로그램 이름 및 개체 유형을 참조하는 문자열입니다. 생성 할 객체의 애플리케이션 이름과 클래스는 AppName.ObjecType에 선언되어야합니다. 예를 들어, Word Application의 개체를 원하면 “Word.Application”을 작성합니다. 나중에 예제에서 자세히 살펴 보겠습니다.

[서버 이름] : 선택적 변수입니다. 개체가 생성 될 네트워크 서버의 이름 문자열입니다. servername이 빈 문자열 ( “”)이면 로컬 시스템이 사용됩니다. 이 장에서는 이것을 사용하지 않을 것입니다.

이제 CreateObject 함수의 기본 사항을 알았으므로 몇 가지 예제에서 사용하겠습니다.

예제 1 : Excel VBA를 사용하여 Microsoft Word 응용 프로그램 열기 따라서 초기 바인딩을 사용하려면 도구→ 참조 메뉴를 사용하여 단어 응용 프로그램에 대한 참조를 추가합니다.

image

그리고 우리의 코드는 다음과 같습니다.

Sub OpenWordApp()

Dim wordApp As New Word.Application

Dim wordDoc As Document

wordApp.Visible = True

wordDoc = wordApp.Documents.Add

End Sub

이 코드의 장점은 VBA의 지능의 도움을 받고 생성 한 개체의 사용 가능한 메서드와 속성을 보여줍니다. 시스템에서 완벽하게 작동합니다. 그러나이 코드를 다른 사람에게 공유하고 도구에서 Microsoft Word 라이브러리에 대한 참조를 추가하지 않은 경우 오류가 발생합니다.

image

이 오류를 방지하려면 아래 코드를 사용하십시오.

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

위의 코드는 모든 컴퓨터에서 완벽하게 작동합니다. 객체를 생성하기 위해 CreateObject 메서드를 사용하여 후기 바인딩을 수행하기 때문에 이식성이 있습니다.

다른 예를 보자 :

예제 2 : CreateObject 함수를 사용하여 통합 문서 개체 만들기 일정 시간 동안 VBA로 작업하는 경우 New 키워드를 사용하여 통합 문서를 만들거나 추가해야합니다. 이 예에서는 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

예, 이것이 VBA에서 CreateObject 메서드를 사용하는 방법입니다. 그것의 장점과 단점을 논의합시다.

객체 생성을위한 CreateObject의 장점 CreateObject의 주요 장점은 코드를 이식 가능하게 만드는 것입니다 (객체 생성이 문제 일 때). 객체 프로그램에 대한 참조를 사용하는지 여부에 대해 걱정하지 않고 코드를 누구에게나 공유 할 수 있습니다.

CreateObject의 단점

CreateObject 메서드의 단점은 다음과 같습니다.

객체 생성에 사용할 클래스의 구조를 알아야합니다.

개체를 만든 후에는 VBA가 사용자에게 도움이되는 정보를 제공하지 않으므로 개체의 메서드와 속성에 대해 전적으로 메모리에 의존하게됩니다.

위의 단점을 극복 할 수 있습니다. 나는 속임수가있다.

다른 사람과 공유 할 코드를 작성할 때마다 객체를 만드는 첫 번째 방법 (도구에서 참조 추가)을 사용합니다. 이렇게하면 코드를 더 빨리 작성할 수 있습니다. VBA 프로그램을 완성하고 테스트 한 후에는 New 메서드를 CreateObject 메서드로 바꿉니다. 이것은 코드를 이식 가능하게 만듭니다. 이 트릭을 사용할 수 있습니다.

예, 이것이 CreateObject 함수를 사용하여 VBA에서 개체를 만드는 방법입니다. 모든 것을 설명 할 수 있었으면합니다. 이 기사 또는 기타 VBA 관련 질문에 대한 질문이 있으면 아래 의견 섹션에서 저에게 질문하십시오.

관련 기사 :

link : / applications-word-outlook-in-vba-getting-started-with-excel-vba-userforms [Getting Started With Excel VBA UserForms]| * Excel에서 양식을 만드는 방법, 사용 방법을 설명합니다. VBA 도구 상자, 사용자 입력 처리 방법 및 마지막으로 사용자 입력 저장 방법. 하나의 예제와 단계별 가이드를 사용하여 이러한 주제를 살펴 보겠습니다.

link : / general-topics-in-vba-vba-variables-in-excel [Excel의 VBA 변수]| * VBA는 Visual Basic for Applications를 나타냅니다.

Microsoft의 프로그래밍 언어입니다. MSExcel, MS-Word 및 MS-Access와 같은 Microsoft Office 응용 프로그램에서 사용되는 반면 VBA 변수는 특정 키워드입니다.

link : / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope]| * 모든 프로그래밍 언어에는 정의 된 변수에 액세스 할 수있는 위치를 정의하는 변수 액세스 지정자가 있습니다. Excel VBA도 예외는 아닙니다. VBA에도 범위 지정자가 있습니다.

link : / cells-ranges-rows-and-columns-in-vba-byref-and-byval-arguments-vba-interview-question [ByRef 및 ByVal 인수]| 인수가 ByRef 인수로 다른 하위 또는 함수에 전달되면 실제 변수의 참조가 전송됩니다. 변수 복사본에 대한 변경 사항은 원래 인수에 반영됩니다.

link : / files-workbook-and-worksheets-in-vba-delete-sheets-without-confirmation-prompts-using-vba-in-microsoft-excel [Microsoft Excel에서 VBA를 사용하여 확인 메시지없이 시트 삭제]| VBA를 사용하여 시트를 삭제하므로 수행중인 작업을 알고 있습니다.

이 경고를 표시하지 않고 망할 시트를 삭제하도록 Excel에 지시하고 싶습니다.

link : / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Microsoft Excel 2016에서 VBA를 사용하여 새 통합 문서 추가 및 저장]| 이 코드에서는 먼저 통합 문서 개체에 대한 참조를 만들었습니다. 그런 다음 새 통합 문서 개체로 초기화했습니다. 이 접근 방식의 이점은이 새 통합 문서에서 작업을 쉽게 수행 할 수 있다는 것입니다. 저장, 닫기, 삭제 등`link : / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [메시지 표시 켜기 Excel VBA 상태 표시 줄 *]`| Excel의 상태 표시 줄은 코드 모니터로 사용할 수 있습니다. VBA 코드가 길고 VBA를 사용하여 여러 작업을 수행하는 경우 화면 깜박임이 표시되지 않도록 화면 업데이트를 비활성화하는 경우가 많습니다.

link : / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Microsoft Excel 2016에서 VBA를 사용하여 경고 메시지 끄기]| *이 코드는 VBA를 비활성화 할뿐만 아니라 경고뿐만 아니라 코드의 시간 효율성도 증가시킵니다. 방법을 살펴 보겠습니다.

인기 기사 :

link : / keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [50 Excel 단축키로 생산성 향상]| 작업 속도를 높이십시오. 이 50 개의 바로 가기를 사용하면 Excel에서 더 빠르게 작업 할 수 있습니다.

link : / formulas-and-functions-introduction-of-vlookup-function [Excel의 VLOOKUP 함수]| 이것은 다른 범위와 시트에서 값을 조회하는 데 사용되는 Excel의 가장 많이 사용되고 인기있는 기능 중 하나입니다. link : / tips-countif-in-microsoft-excel [Excel 2016의 COUNTIF]| 이 놀라운 기능을 사용하여 조건으로 값을 계산합니다. 특정 값을 계산하기 위해 데이터를 필터링 할 필요가 없습니다.

Countif 기능은 대시 보드를 준비하는 데 필수적입니다.

link : / excel-formula-and-function-excel-sumif-function [Excel에서 SUMIF 함수 사용 방법]| 이것은 또 다른 대시 보드 필수 기능입니다. 이를 통해 특정 조건에 대한 값을 합산 할 수 있습니다.