Interaction.CreateObject(String, String) 메서드

정의

COM 개체를 만들고 만든 개체에 대한 참조를 반환합니다. 클래스가 명시적으로 COM 구성 요소로 노출되지 않는 경우 Visual Basic에서 CreateObject를 사용하여 해당 클래스의 인스턴스를 만들 수 없습니다.

public static object CreateObject (string ProgId, string? ServerName = "");
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object CreateObject (string ProgId, string? ServerName = "");
public static object CreateObject (string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

매개 변수

ProgId
String

필수 요소. String. 만들 개체의 프로그램 ID입니다.

ServerName
String

선택 사항입니다. String. 개체가 만들어질 네트워크 서버의 이름입니다. ServerName이 빈 문자열("")이면 로컬 컴퓨터가 사용됩니다.

반환

COM 개체를 만들고 만든 개체에 대한 참조를 반환합니다. 클래스가 명시적으로 COM 구성 요소로 노출되지 않는 경우 Visual Basic에서 CreateObject를 사용하여 해당 클래스의 인스턴스를 만들 수 없습니다.

특성

예외

서버를 사용할 수 없습니다.

지정된 형식의 개체가 없습니다.

예제

다음 예제에서는 함수를 CreateObject 사용하여 Microsoft Excel 워크시트를 만들고 워크시트를 파일에 저장합니다. 이 예제를 사용하려면 이 프로그램이 실행되는 컴퓨터에 Excel을 설치해야 합니다. 또한 프로젝트 메뉴에 있는 참조 추가 대화 상자의 COM 탭에서 형식 라이브러리에 대한 참조를 추가해야 합니다. 형식 라이브러리의 이름은 컴퓨터에 설치된 Excel 버전에 따라 달라집니다. 예를 들어 Microsoft Excel 2002의 형식 라이브러리 이름은 Microsoft Excel 10.0 개체 라이브러리입니다.

Sub TestExcel()
    Dim xlApp As Microsoft.Office.Interop.Excel.Application
    Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
    Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet

    xlApp = CType(CreateObject("Excel.Application"), 
                Microsoft.Office.Interop.Excel.Application)
    xlBook = CType(xlApp.Workbooks.Add, 
                Microsoft.Office.Interop.Excel.Workbook)
    xlSheet = CType(xlBook.Worksheets(1), 
                Microsoft.Office.Interop.Excel.Worksheet)

    ' The following statement puts text in the second row of the sheet.
    xlSheet.Cells(2, 2) = "This is column B row 2"
    ' The following statement shows the sheet.
    xlSheet.Application.Visible = True
    ' The following statement saves the sheet to the C:\Test.xls directory.
    xlSheet.SaveAs("C:\Test.xls")
    ' Optionally, you can call xlApp.Quit to close the workbook.
End Sub

설명

COM 구성 요소의 instance 만들려면 에서 반환된 개체를 개체 변수에 CreateObject 할당합니다.

Sub CreateADODB()  
   Dim adoApp As Object  
   adoApp = CreateObject("ADODB.Connection")  
End Sub  

사용 하 여 반환된 된 개체를 저장 하는 개체 변수의 형식을 애플리케이션의 성능이 저하 될 수 있습니다. 절을 사용하여 개체 변수를 As Object 선언하면 모든 형식의 개체에 대한 참조를 포함할 수 있는 변수가 만들어집니다. 그러나 해당 변수를 통해 개체에 대한 액세스는 런타임에 바인딩됩니다. 즉, 프로그램이 실행되면 바인딩이 발생합니다. 애플리케이션 성능 저하를 포함 하 여 런타임에 바인딩을 사용 하면 안 되는 많은 이유가 있습니다.

초기 바인딩( 즉, 프로그램이 컴파일될 때 바인딩)을 생성하는 개체 변수를 만들 수 있습니다. 이렇게 하려면 프로젝트 메뉴에 있는 참조 추가 대화 상자의 COM 탭에서 개체의 형식 라이브러리에 대한 참조를 추가합니다. 그런 다음, 개체의 특정 형식에 대한 개체 변수를 선언합니다. 대부분의 경우 문과 기본 interop 어셈블리를 사용하여 함수를 사용하는 DimCreateObject 것보다 개체를 만드는 것이 더 효율적입니다.

관리되지 않는 코드와 상호 작용

또 다른 문제는 COM 개체가 공용 언어 런타임의 이점 없이 관리되지 않는 코드인 코드를 사용한다는 것입니다. Visual Basic의 관리 코드를 COM의 관리되지 않는 코드와 혼합하는 데는 상당한 복잡성이 있습니다. COM 개체에 대한 참조를 추가하면 Visual Basic에서 해당 라이브러리에 대한 PIA(기본 interop 어셈블리)를 검색합니다. 찾은 경우 를 사용합니다. PIA를 찾을 수 없는 경우 COM 라이브러리의 각 클래스에 대한 로컬 상호 운용성 클래스를 포함하는 상호 운용성 어셈블리를 만듭니다. 자세한 내용은 .NET Framework 애플리케이션의 COM 상호 운용성합니다.

일반적으로 가능하면 강력한 바인딩된 개체와 기본 interop 어셈블리를 사용해야 합니다. 아래 예제에서는 데모용으로만 Microsoft Office 개체와 함께 함수를 사용합니다 CreateObject . 그러나 이러한 개체는 적절한 기본 interop 어셈블리와 함께 사용할 때 사용하기 쉽고 더 안정적입니다.

원격 컴퓨터에서 개체 만들기

컴퓨터 이름을 함수의 인수 CreateObject 에 전달하여 원격 네트워크 컴퓨터에서 개체를 ServerName 만들 수 있습니다. 해당 이름은 공유 이름의 컴퓨터 이름 부분과 동일합니다. "\\MyServer\Public"이라는 공유의 경우 "MyServer" ServerName 입니다.

참고

COM 설명서를 참조 하세요 (Microsoft Developer Network 참조) 원격 네트워크에 연결 된 컴퓨터에서 애플리케이션을 액세스할 수 있도록 대 한 자세한 내용은 합니다. 애플리케이션에 대 한 레지스트리 키를 추가 해야 합니다.

다음 코드는 라는 MyServer원격 컴퓨터에서 실행되는 Excel instance 버전 번호를 반환합니다.

Sub CreateRemoteExcelObj()  
    Dim xlApp As Object  
    ' Replace string "\\MyServer" with name of the remote computer.  
    xlApp = CreateObject("Excel.Application", "\\MyServer")  
    MsgBox(xlApp.Version)  
End Sub  

원격 서버 이름이 올바르지 않거나 사용할 수 없는 경우 런타임 오류가 발생합니다.

참고

개체의 현재 instance 없는 경우 를 사용합니다CreateObject. 개체의 instance 이미 실행 중인 경우 새 instance 시작되고 지정된 형식의 개체가 만들어집니다. 현재 인스턴스를 사용 하거나 애플리케이션을 시작 하 고 파일을 로드 하 게 하려면 사용 된 GetObject 함수입니다. 개체가 단일 instance 개체로 등록한 경우 실행 횟수 CreateObject 에 관계없이 개체의 instance 하나만 만들어집니다.

프레임워크 개체 만들기

함수를 CreateObject 사용하여 COM 개체를 만들 수 있습니다. .NET Framework 개체 ActivatorSystem 를 만들기 위한 정확한 메커니즘은 없지만 네임스페이스의 에는 로컬 또는 원격 개체를 만드는 메서드가 포함되어 있습니다. 특히 CreateInstance 메서드 또는 메서드가 CreateInstanceFrom 유용할 수 있습니다.

중요

함수에는 CreateObject 부분 신뢰 상황에서의 실행에 영향을 줄 수 있는 관리되지 않는 코드 권한이 필요합니다. 자세한 내용은 및 코드 액세스 권한을 참조 SecurityPermission 하세요.

적용 대상

추가 정보