수색…


비고

가장 간단한 방법으로 CreateObject 는 개체의 인스턴스를 만드는 반면 GetObject 는 개체의 기존 인스턴스를 가져 GetObject . 개체를 만들거나 가져올 수 있는지 여부를 결정하는 작업은 Instancing 속성 에 따라 다릅니다. 일부 개체는 SingleUse (예 : WMI)이며 이미 존재하는 경우 만들 수 없습니다. 다른 개체 (예 : Excel)는 다중 사용이며 한 번에 여러 인스턴스를 실행할 수 있습니다. 개체의 인스턴스가 이미 존재하지 않고 GetObject 를 시도하면 다음과 같은 트래핑 할 수있는 메시지가 나타납니다. Run-time error '429': ActiveX component can't create object .

GetObject 는 다음 두 개의 선택적 매개 변수 중 적어도 하나가 있어야합니다.

  1. Pathname - Variant (String) : 개체가 들어있는 파일의 전체 경로 (filename 포함)입니다. 이 매개 변수는 선택 사항이지만 Pathname 을 생략하면 Class 가 필요합니다.
  2. Class - Variant (String) : 객체의 형식 정의 (Application 및 ObjectType)를 나타내는 문자열입니다. Pathname 이 생략되면 클래스 가 필요합니다.

CreateObject 에는 하나의 필수 매개 변수와 하나의 선택적 매개 변수가 있습니다.

  1. Class - Variant (String) : 객체의 형식 정의 (Application 및 ObjectType)를 나타내는 문자열입니다. 클래스 는 필수 매개 변수입니다.
  2. Servername - Variant (String) : 개체가 생성 될 원격 컴퓨터의 이름입니다. 생략하면 개체가 로컬 컴퓨터에 만들어집니다.

클래스 는 항상 Application.ObjectType 형태로 두 부분으로 구성됩니다.

  1. Application - 개체가 포함 된 응용 프로그램의 이름입니다. |
  2. Object Type - 생성되는 객체의 유형입니다. |

몇 가지 예제 클래스는 다음과 같습니다.

  1. Word.Application
  2. 엑셀 시트
  3. Scripting.FileSystemObject

GetObject 및 CreateObject 데모

MSDN-GetObject 함수

ActiveX 구성 요소가 제공하는 개체에 대한 참조를 반환합니다.

개체의 현재 인스턴스가 있거나 이미로드 된 파일로 개체를 만들려는 경우 GetObject 함수를 사용하십시오. 현재 인스턴스가없고 파일을로드 한 상태에서 개체를 시작하지 않으려면 CreateObject 함수를 사용합니다.

Sub CreateVSGet()
    Dim ThisXLApp As Excel.Application 'An example of early binding
    Dim AnotherXLApp As Object 'An example of late binding
    Dim ThisNewWB As Workbook
    Dim AnotherNewWB As Workbook
    Dim wb As Workbook
    
    'Get this instance of Excel
    Set ThisXLApp = GetObject(ThisWorkbook.Name).Application
    'Create another instance of Excel
    Set AnotherXLApp = CreateObject("Excel.Application")
    'Make the 2nd instance visible
    AnotherXLApp.Visible = True
    'Add a workbook to the 2nd instance
    Set AnotherNewWB = AnotherXLApp.Workbooks.Add
    'Add a sheet to the 2nd instance
    AnotherNewWB.Sheets.Add
    
    'You should now have 2 instances of Excel open
    'The 1st instance has 1 workbook: Book1
    'The 2nd instance has 1 workbook: Book2
    
    'Lets add another workbook to our 1st instance
    Set ThisNewWB = ThisXLApp.Workbooks.Add
    'Now loop through the workbooks and show their names
    For Each wb In ThisXLApp.Workbooks
        Debug.Print wb.Name
    Next
    'Now the 1st instance has 2 workbooks: Book1 and Book3
    'If you close the first instance of Excel,
    'Book1 and Book3 will close, but book2 will still be open
    
End Sub


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow