Applies ToMicrosoft 365용 Access Access 2024 Access 2021 Access 2019 Access 2016

참고: 이 항목에 설명된 함수, 메서드, 개체 또는 속성은 Microsoft Jet Expression Service가 샌드박스 모드에서 실행 중이면 사용할 수 없으므로 안전하지 않은 식이 평가되지 않습니다. 샌드박스 모드에 대한 자세한 내용은 도움말에서 "샌드박스 모드"를 검색하세요.

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

구문

GetObject([pathname ] [, class ] )

GetObject 함수 구문에는 다음과 같은 인수가 사용됩니다.

인수

설명

경로

선택 요소입니다. Variant (String). 검색할 개체를 포함하는 파일의 전체 경로 및 이름입니다. pathname을 생략하면 클래스가 필요합니다.

클래스

선택 요소입니다. Variant (String). 개체의 클래스 나타내는 문자열입니다.

클래스 인수 구문 appname을 사용합니다.objecttype 및 에는 다음 부분이 있습니다.

구성 요소

설명

Appname

필수 요소입니다. Variant (String). 개체를 제공하는 애플리케이션의 이름입니다.

objecttype

필수 요소입니다. Variant (String). 만들 개체의 형식 또는 클래스입니다.

주의

참고: VBA(Visual Basic for Applications) 모듈에서 이 함수를 사용하는 경우를 예로 들어 보겠습니다. VBA 사용에 대해 자세히 알아보려면 검색 옆의 드롭다운 목록에서 개발자 참고를 선택하고 검색 상자에 검색어를 하나 이상 입력하세요.

GetObject 함수를 사용하여 파일에서 ActiveX 개체에 액세스하고 개체를 개체 변수 에 할당합니다. Set 문을 사용하여 GetObject에서 반환한 개체를 개체 변수에 할당합니다. 예를 들면 다음과 같습니다.

Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

이 코드를 실행하면 지정된 경로 이름과 연결된 애플리케이션이 시작되고 지정된 파일의 개체가 활성화됩니다.

pathname 이 길이가 0인 문자열("")인 경우 GetObject는 지정된 형식의 새 개체 인스턴스를 반환합니다. pathname 인수를 생략하면 GetObject는 지정된 형식의 현재 활성 개체를 반환합니다. 지정된 형식의 개체가 없으면 오류가 발생합니다.

일부 애플리케이션을 사용하면 파일의 일부를 활성화할 수 있습니다. 파일 이름 끝에 느낌표(!)를 추가하고 활성화하려는 파일의 일부를 식별하는 문자열로 따라가세요. 이 문자열을 만드는 방법에 대한 자세한 내용은 개체를 만든 애플리케이션에 대한 설명서를 참조하세요.

예를 들어 그리기 애플리케이션에서는 파일에 저장된 드로잉에 여러 계층이 있을 수 있습니다. 다음 코드를 사용하여 SCHEMA.CAD라는 드로잉 내에서 레이어를 활성화할 수 있습니다.

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

개체의 클래스를 지정하지 않으면 Automation은 사용자가 제공한 파일 이름에 따라 시작할 애플리케이션과 활성화할 개체를 결정합니다. 그러나 일부 파일은 둘 이상의 개체 클래스를 지원할 수 있습니다. 예를 들어 드로잉은 Application 개체, Drawing 개체, 도구 모음 개체 등 세 가지 유형의 개체를 지원할 수 있습니다. 이 개체는 모두 동일한 파일의 일부입니다. 활성화하려는 파일에서 개체를 지정하려면 선택적 클래스 인수를 사용합니다. 예를 들면 다음과 같습니다.

Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
    "FIGMENT.DRAWING")

예제에서 FIGMENT 그리기 애플리케이션의 이름이고 DRAWING 지원하는 개체 형식 중 하나입니다.

개체가 활성화되면 정의한 개체 변수를 사용하여 코드에서 참조합니다. 앞의 예제에서는 MyObject개체 변수를 사용하여 새 개체의 속성 및 메서드에 액세스합니다. 예를 들면 다음과 같습니다.

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

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

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

예제

이 예제에서는 GetObject 함수를 사용하여 특정 Excel 워크시트(MyXL)에 대한 참조를 가져옵니다. 워크시트의 Application 속성을 사용하여 Excel을 표시하고 닫는 등의 작업을 수행합니다. DetectExcel Sub 프로시저는 두 개의 API 호출을 사용하여 Excel을 찾고 실행 중인 경우 실행 중인 개체 테이블에 입력합니다. Microsoft Excel이 아직 실행되고 있지 않으면 GetObject 를 처음 호출하면 오류가 발생합니다. 이 예제에서 오류로 인해 ExcelWasNotRunning 플래그가 True로 설정됩니다. GetObject에 대한 두 번째 호출은 열 파일을 지정합니다. Excel이 아직 실행되고 있지 않으면 두 번째 호출이 시작되고 지정된 파일 mytest.xls 표시되는 워크시트에 대한 참조를 반환합니다. 파일은 지정된 위치에 있어야 합니다. 그렇지 않으면 Visual Basic 오류 자동화 오류가 생성됩니다. 다음으로, 예제 코드는 Excel과 지정된 워크시트가 포함된 창을 모두 표시합니다. 마지막으로 이전 버전의 Excel이 실행되지 않은 경우 코드는 Application 개체의 Quit 메서드를 사용하여 Excel을 닫습니다. 애플리케이션이 이미 실행 중인 경우 애플리케이션을 닫으려고 시도하지 않습니다. 참조 자체는 Nothing으로 설정하여 해제 됩니다.

' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
                    ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
                    ByVal wParam as Long, _
                    ByVal lParam As Long) As Long
Sub GetExcel()
    Dim MyXL As Object    ' Variable to hold reference
                                ' to Microsoft Excel.
    Dim ExcelWasNotRunning As Boolean    ' Flag for final release.
' Test to see if there is a copy of Microsoft Excel already running.
    On Error Resume Next    ' Defer error trapping.
' GetObject function called without the first argument returns a 
' reference to an instance of the application. If the application isn't
' running, an error occurs.
    Set MyXL = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then ExcelWasNotRunning = True
    Err.Clear    ' Clear Err object in case error occurred.
' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
    DetectExcel
' Set the object variable to reference the file you want to see.
    Set MyXL = GetObject("c:\vb4\MYTEST.XLS")
' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
    MyXL.Application.Visible = True
    MyXL.Parent.Windows(1).Visible = True
     Do manipulations of your  file here.
    ' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
    If ExcelWasNotRunning = True Then 
        MyXL.Application.Quit
    End IF
    Set MyXL = Nothing    ' Release reference to the
                                ' application and spreadsheet.
End Sub
Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
    Const WM_USER = 1024
    Dim hWnd As Long
' If Excel is running this API call returns its handle.
    hWnd = FindWindow("XLMAIN", 0)
    If hWnd = 0 Then    ' 0 means Excel not running.
        Exit Sub
    Else                
    ' Excel is running so use the SendMessage API 
    ' function to enter it in the Running Object Table.
        SendMessage hWnd, WM_USER + 18, 0, 0
    End If
End Sub

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.