GetObject 함수(Visual Basic)

업데이트: 2007년 11월

COM 구성 요소에 의해 제공된 개체에 대한 참조를 반환합니다.

Public Function GetObject( _
    Optional ByVal PathName As String = Nothing, _
    Optional ByVal [Class] As String = Nothing _
) As Object

매개 변수

매개 변수

설명

PathName

선택적 요소. String. 검색할 개체를 포함하는 파일의 전체 경로와 이름입니다. PathName이 생략되거나 빈 문자열("")이면 Class가 필수 매개 변수가 됩니다.

Class

PathName이 제공되지 않을 경우 필수 요소입니다. String. 개체의 클래스를 나타내는 문자열입니다. Class 인수의 구문과 구성 요소는 다음과 같습니다.

appname.objecttype

매개 변수

설명

appname

필수 요소. String. 개체를 제공하는 응용 프로그램의 이름입니다.

objecttype

필수 요소. String. 만들 개체의 형식이나 클래스입니다.

예외

예외 형식

오류 번호

조건

Exception

429

지정한 클래스 형식의 개체가 없습니다.

FileNotFoundException

432

지정한 경로와 파일 이름의 개체가 없습니다.

비구조적 오류 처리를 사용하는 Visual Basic 6.0 응용 프로그램을 업그레이드하는 경우에는 "오류 번호" 열을 참조하십시오. 오류 번호를 Number 속성(Err 개체)과 비교할 수 있습니다. 그러나 가능하면 이러한 오류 제어 방법을 Visual Basic의 구조적 예외 처리 개요에 설명된 방식으로 바꾸는 것이 좋습니다.

설명

파일에서 COM 구성 요소 인스턴스를 로드하려면 GetObject 함수를 사용하십시오. 다음은 이에 대한 예입니다.

Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")

이 코드를 실행하면 지정한 PathName과 연결된 응용 프로그램이 시작되고 지정한 파일에 있는 개체가 활성화됩니다.

기본적인 경우

PathName이 길이가 0인 문자열("")이면 GetObject는 지정한 형식의 새 개체 인스턴스를 반환하고, PathName 인수가 없으면 GetObject는 Class에 지정한 클래스 형식의 현재 활성 개체를 반환합니다. 지정한 형식의 개체가 존재하지 않으면 오류가 발생합니다.

하위 개체 액세스

일부 응용 프로그램에서는 파일과 연결된 하위 개체를 활성화할 수 있습니다. 이렇게 하려면 파일 이름 뒤에 느낌표(!)와 활성화할 파일의 일부를 나타내는 문자열을 추가합니다. 이 문자열의 작성 방법에 대한 자세한 내용은 해당 개체를 만든 응용 프로그램의 설명서를 참조하십시오.

예를 들어, 그리기 응용 프로그램에서 파일에 저장된 하나의 그림에 여러 계층이 있을 수 있습니다. 다음 코드를 사용하면 schema.cad라는 그림에서 특정 계층을 활성화할 수 있습니다.

layerObject = GetObject("C:\CAD\schema.cad!Layer3")

클래스 지정

개체의 Class를 지정하지 않으면 사용자가 지정한 파일 이름에 따라 자동화를 통해 시작할 응용 프로그램과 활성화할 개체가 결정됩니다. 그러나 파일 중에는 개체 클래스를 두 개 이상 지원하는 것도 있습니다. 예를 들어, 한 그림에서 Application 개체, Drawing 개체, Toolbar 개체 등 세 가지 형식의 개체를 지원하며 모든 개체가 동일한 파일의 일부일 수 있습니다. 이 경우 파일에서 활성화할 개체를 지정하려면 선택적 요소인 Class 인수를 사용합니다. 다음은 이에 대한 예입니다.

Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")

앞의 예제에서 Figment는 그리기 응용 프로그램의 이름이고 Drawing은 지원되는 개체 형식 중 하나입니다.

개체 사용

일단 개체가 활성화되면 사용자가 선언한 개체 변수를 사용하여 코드 안에서 이 개체를 참조합니다. 위의 예제에서는 drawObj 개체 변수를 사용하여 새 개체의 속성과 메서드에 액세스합니다. 다음은 이에 대한 예입니다.

drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
참고:

GetObject 함수는 현재 개체 인스턴스가 있거나 이미 로드된 파일로 개체를 만들 경우에 사용합니다. 현재 인스턴스가 없고, 로드된 파일로 개체를 시작하지 않으려면 CreateObject 함수(Visual Basic)를 사용합니다.

개체가 ActiveX 단일 인스턴스 개체로 등록되어 있는 경우에는 CreateObject 호출 횟수에 관계없이 개체 인스턴스가 하나만 만들어집니다. 단일 인스턴스 개체의 경우 길이가 0인 문자열("") 구문으로 GetObject를 호출하면 이 함수는 항상 같은 인스턴스를 반환하며, PathName 인수를 생략하면 오류가 발생합니다. Visual Basic을 사용하여 만든 클래스에 대한 참조를 가져오는 경우에는 GetObject 함수를 사용할 수 없습니다.

보안 정보:

GetObject 함수를 사용하려면 비관리 코드 권한이 있어야 합니다. 이 권한은 부분 신뢰 상태에서 해당 함수의 실행을 제한할 수 있습니다. 자세한 내용은 SecurityPermission코드 액세스 권한을 참조하십시오.

개체 사용을 마치면 개체에 대한 모든 참조를 Nothing으로 설정합니다. 이렇게 하면 런타임에서 COM 구성 요소를 삭제할 수 있습니다.

예제

다음 예제에서는 GetObject 함수를 사용하여 Excel이 실행 중인지 여부를 확인합니다.

' Test to see if a copy of Excel is already running.
Private Sub testExcelRunning()
    On Error Resume Next
    ' GetObject called without the first argument returns a
    ' reference to an instance of the application. If the
    ' application is not already running, an error occurs.
    Dim excelObj As Object = GetObject(, "Excel.Application")
    If Err.Number = 0 Then
        MsgBox("Excel is running")
    Else
        MsgBox("Excel is not running")
    End If
    Err.Clear()
    excelObj = Nothing
End Sub

다음 예제에서는 GetObject 함수를 사용하여 특정 Microsoft Excel 워크시트(excelObj)에 대한 참조를 가져옵니다. GetObject를 호출하면 지정한 파일(test.xls)에서 나타내는 워크시트에 대한 참조가 반환됩니다. 다음 단계로, 예제 코드에서는 Excel과 지정한 워크시트가 포함된 창을 모두 볼 수 있게 만듭니다.

이 예제에서는 개체가 Object 형식의 변수에 할당되는 런타임에 바인딩을 사용하므로 Option Strict Off가 필요합니다. Excel 형식 라이브러리에 프로젝트 참조를 추가하는 경우 Option Strict On을 지정하고 특정 형식의 개체를 선언할 수 있습니다. 이렇게 하려면 Visual Studio의 프로젝트 메뉴에서 참조 추가 대화 상자를 열고 COM 탭에서 Excel 형식 라이브러리를 선택합니다.

' Add Option Strict Off to the top of your program.
Option Strict Off
Private Sub getExcel()
    Dim fileName As String = "c:\vb\test.xls"

    If Not My.Computer.FileSystem.FileExists(fileName) Then
        MsgBox(fileName & " does not exist")
        Exit Sub
    End If

    ' Set the object variable to refer to the file you want to use.
    Dim excelObj As Object = GetObject(fileName)
    ' Show Excel through its Application property. 
    excelObj.Application.Visible = True
    ' Show the window containing the file.
    Dim winCount As Integer = excelObj.Parent.Windows.Count()
    excelObj.Parent.Windows(winCount).Visible = True

    ' Insert additional code to manipulate the test.xls file here.
    ' ...

    excelObj = Nothing
End Sub

스마트 장치 개발자 참고 사항

이 함수는 지원되지 않습니다.

요구 사항

네임스페이스: Microsoft.VisualBasic

**모듈:**Interaction

**어셈블리:**Visual Basic 런타임 라이브러리(Microsoft.VisualBasic.dll)

참고 항목

참조

CreateObject 함수(Visual Basic)

Declare 문

Option Strict 문

Exception

FileNotFoundException