이 글은 도움말을 번역한 글입니다.
CreateObject 함수
ActiveX 개체에 대한 참조를 생성하고 반환합니다.
Syntax
CreateObject(class, [ servername ])
class : 필수입니다.Variant(문자열). 생성할 개체의 애플리케이션 이름 및 클래스입니다.
servername : 선택 사항입니다. Variant(문자열). 개체를 생성할 네트워크 서버의 이름입니다. 서버 이름이 빈 문자열("")인 경우 로컬 컴퓨터가 사용됩니다.
클래스 인수(class argument)는 appname.objecttype 형식을 사용하며 다음과 같은 구성 요소를 갖습니다:
appname - 필수; Variant (문자열). 객체를 제공하는 응용 프로그램의 이름입니다.
objecttype - 필수; Variant (문자열). 생성할 객체의 유형 또는 클래스를 나타냅니다.
비고
자동화를 지원하는 모든 애플리케이션은 적어도 한 가지 유형의 개체를 제공합니다. 예를 들어 워드 프로세싱 애플리케이션은 애플리케이션 개체, 문서 개체 및 도구 모음 개체를 제공할 수 있습니다.
ActiveX 개체를 만들려면 CreateObject가 반환한 개체를 개체 변수에 할당합니다.
' Declare an object variable to hold the object
' reference. Dim as Object causes late binding.
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")
이 코드는 Microsoft Excel 스프레드시트 개체를 생성하는 애플리케이션을 시작합니다. 개체가 생성되면, 정의한 개체 변수를 사용하여 코드에서 참조합니다. 다음 예제에서는, 개체 변수 및 다른 Microsoft Excel 개체
예: ExcelSheet, 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
절을 사용하여 개체 변수를 선언하면 모든 유형의 개체에 대한 참조를 포함할 수 있는 변수가 생성됩니다. 그러나 해당 변수를 통한 개체에 대한 액세스는 후기 바인딩, 즉 프로그램이 실행될 때 바인딩이 발생합니다. 조기 바인딩, 즉 프로그램이 컴파일될 때 바인딩되는 개체 변수를 만들려면 특정 클래스 ID로 개체 변수를 선언합니다. 예를 들어 다음과 같은 Microsoft 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"입니다.
다음 코드는 원격 컴퓨터에서 실행 중인 Excel 인스턴스의 버전 번호인 :MyServer를 반환합니다.
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MyServer")
Debug.Print xlApp.Version
원격 서버가 존재하지 않거나 사용할 수 없는 경우 런타임 오류가 발생합니다.
Note
개체의 현재 인스턴스가 없는 경우 CreateObject를 사용합니다. 객체의 인스턴스가 이미 실행 중인 경우 새 인스턴스가 시작되고 지정된 유형의 객체가 생성됩니다. 현재 인스턴스를 사용하거나 애플리케이션을 시작하고 파일을 로드하도록 하려면 GetObject 함수를 사용합니다.
개체가 단일 인스턴스 개체로 등록되어 있는 경우 CreateObject가 몇 번 실행되더라도 개체의 인스턴스는 하나만 생성됩니다.
Example
예제 코드 - 1
다음은 Late binding을 사용하여 dictionary 개체를 생성하고 요소를 추가하고 조회하는 예제입니다:
Sub LateBindingDictionaryExample()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
' 요소 추가
dict.Add "apple", 10
dict.Add "banana", 5
dict.Add "orange", 15
' 요소 조회
Dim fruit As Variant
For Each fruit In dict.Keys
Debug.Print fruit & ": " & dict(fruit)
Next fruit
End Sub
예제 코드 - 2
Late binding을 사용하여 FileSystemObject 개체를 생성하는 방법은 다음과 같습니다.
Sub LateBindingFileSystemObjectExample()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' FileSystemObject를 사용하여 파일 및 폴더 조작 수행
Dim folderPath As String
folderPath = "C:\TestFolder"
' 폴더 생성
fso.CreateFolder folderPath
' 파일 생성
Dim filePath As String
filePath = folderPath & "\test.txt"
Dim file As Object
Set file = fso.CreateTextFile(filePath)
file.Write "Hello, this is a test!"
file.Close
' 파일 삭제
fso.DeleteFile filePath
' 폴더 삭제
fso.DeleteFolder folderPath
End Sub
예제 코드 - 3
Late binding을 사용하여 정규표현식(Regular Expression)을 사용하는 방법은 다음과 같습니다. 정규표현식은 Microsoft VBScript Regular Expressions 라이브러리에서 제공하는 RegExp 개체를 사용하여 처리할 수 있습니다.
Sub LateBindingRegexExample()
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
' 정규표현식 패턴 설정
regex.Pattern = "\d+" ' 숫자를 찾는 정규표현식 패턴 (\d+는 한 개 이상의 숫자를 의미)
' 대상 문자열 설정
Dim targetString As String
targetString = "Hello, 12345 World!"
' 정규표현식 패턴과 대상 문자열 매칭
Dim matches As Object
Set matches = regex.Execute(targetString)
' 매칭 결과 출력
Dim match As Object
For Each match In matches
Debug.Print match.Value
Next match
End Sub
예제 코드 - 4
로컬 컴퓨터에 있는 .accdb 파일을 ADODB를 이용하여 처리하는 예제는 다음과 같습니다.
Sub LateBindingADODBLocalACCDBExample()
Dim conn As Object
Set conn = CreateObject("ADODB.Connection")
' 데이터베이스 연결 설정
Dim connectionString As String
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Northwind.accdb;"
conn.connectionString = connectionString
' 데이터베이스 연결
conn.Open
' SQL 쿼리 실행
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
Dim sqlQuery As String
sqlQuery = "SELECT * FROM Employees" ' 테이블 이름에 맞게 수정
rs.Open sqlQuery, conn
' 결과 출력
Do While Not rs.EOF
Debug.Print rs.Fields("First Name").Value & " " & rs.Fields("E-mail Address").Value ' 필드 이름에 맞게 수정
rs.MoveNext
Loop
' 레코드셋 닫기
rs.Close
' 연결 닫기
conn.Close
End Sub
예제 코드 - 5
다음 코드는 Late binding을 사용하여 ADODB.Stream을 생성하고, 텍스트를 쓰고 읽는 예제입니다.
Sub LateBindingADODBStreamExample()
Dim stream As Object
Set stream = CreateObject("ADODB.Stream")
' 스트림 타입 설정
stream.Type = 2 ' adTypeText
' 스트림 열기
stream.Open
' 텍스트 쓰기
stream.WriteText "Hello, this is a test!"
' 스트림에서 텍스트 읽기
stream.Position = 0
Dim content As String
content = stream.ReadText
' 결과 출력
Debug.Print content
' 스트림 닫기
stream.Close
End Sub
예제 코드 - 6
아래 예제 코드는 Late Binding으로 ArrayList를 생성하고 데이터를 추가하며, 추가한 데이터를 역순으로 정렬하는 예제입니다.
Sub LateBindingArrayListExample()
Dim arrayList As Object
Set arrayList = CreateObject("System.Collections.ArrayList")
' 데이터 추가
arrayList.Add "Apple"
arrayList.Add "Banana"
arrayList.Add "Orange"
' 데이터 조회 (정렬 전)
Debug.Print "=== Original Order ==="
Dim i As Integer
For i = 0 To arrayList.Count - 1
Debug.Print arrayList(i)
Next i
' 역순으로 정렬
arrayList.Reverse
' 데이터 조회 (정렬 후)
Debug.Print "=== Reversed Order ==="
For i = 0 To arrayList.Count - 1
Debug.Print arrayList(i)
Next i
End Sub
' 출력 결과
' === Original Order ===
' Apple
' Banana
' Orange
' === Reversed Order ===
' Orange
' Banana
' Apple
예제 코드 - 7
아래 예제 코드는 Late Binding으로 SortedList를 생성하고 정렬된 목록을 출력하는 예제입니다.
Sub UseSortedListLateBinding()
Dim SortedList As Object
Dim i As Integer
Dim Value As Variant
' SortedList 개체 생성 (CreateObject)
Set SortedList = CreateObject("System.Collections.SortedList")
' 데이터 추가
SortedList.Add "O", "Orange"
SortedList.Add "B", "Banana"
SortedList.Add "A", "Apple"
SortedList.Add "G", "Grapes"
SortedList.Add "C", "Cherry"
' 키 및 값으로 정렬된 목록 출력
Debug.Print "Keys and Values sorted by key:"
For i = 0 To SortedList.Count - 1
Debug.Print SortedList.GetKey(i), SortedList.GetByIndex(i)
Next i
End Sub
' 출력 결과
' Keys and Values sorted by key:
' A Apple
' B Banana
' C Cherry
' G Grapes
' O Orange
'VBA 라이브러리' 카테고리의 다른 글
Format 함수 (0) | 2023.08.22 |
---|---|
GetObject 함수 (0) | 2023.08.06 |
String 함수 (0) | 2023.07.22 |
Space 함수 (0) | 2023.07.22 |
StrConv 함수 (0) | 2023.07.22 |