적용 대상
Office Products

증상

Automation을 사용하여 Microsoft Word 제어하는 Microsoft Visual Basic 코드를 실행하면 다음 오류 메시지 중 하나가 나타날 수 있습니다. 오류 메시지 1

런타임 오류 '-2147023174'(800706ba) 자동화 오류

오류 메시지 2

런타임 오류 '462': 원격 서버 컴퓨터가 없거나 사용할 수 없음

원인

Visual Basic은 Word 개체 변수로 한정하지 않고 Word 개체, 메서드 또는 속성을 호출하는 코드 줄로 인해 Word 대한 참조를 설정했습니다. Visual Basic은 프로그램을 종료할 때까지 이 참조를 릴리스하지 않습니다. 이 잘못된 참조는 코드가 두 번 이상 실행되면 자동화 코드를 방해합니다.

해결 방법

Word 개체, 메서드 또는 속성에 대한 각 호출이 적절한 개체 변수로 정규화되도록 코드를 수정합니다.

상태

이것은 의도적으로 설계된 동작입니다.

추가 정보

Word 자동화하려면 일반적으로 Word Application 또는 Document 개체를 참조하는 개체 변수를 설정합니다. 그런 다음 Word 개체 모델의 Selection, Range 또는 기타 개체를 참조하도록 다른 개체 변수를 설정할 수 있습니다. Word 개체, 메서드 또는 속성을 사용하는 코드를 작성하는 경우 항상 적절한 개체 변수를 사용하여 호출 앞에 와야 합니다. 그렇지 않은 경우 Visual Basic은 현재 실행 중인 instance 설정하는 숨겨진 전역 변수 참조를 사용합니다. Word 종료되거나 선언된 개체 변수가 해제된 경우 숨겨진 전역 변수는 이제 유효하지 않은(소멸된) 개체를 참조합니다. 자동화 코드를 다시 실행하면 앞에서 언급한 오류와 함께 이 숨겨진 개체 변수에 대한 호출이 실패합니다.다음 단계에서는 이 문제를 재현하는 방법과 문제를 해결하는 방법을 보여 줍니다.  

동작을 재현하는 단계

  1. Visual Basic에서 새 표준 EXE 프로젝트를 시작합니다. Form1은 기본적으로 만들어집니다.

  2. 프로젝트 메뉴에서 참조를 클릭한 다음 다음 옵션 중 하나를 클릭합니다.

    • Office Word 2007의 경우 Microsoft Word 12.0 개체 라이브러리를 클릭합니다.

    • Word 2003의 경우 Microsoft Word 11.0 개체 라이브러리를 클릭합니다.

    • Word 2003의 경우 Microsoft Word 10.0 개체 라이브러리를 클릭합니다.

    • Word 2000의 경우 Microsoft Word 9.0 개체 라이브러리를 클릭합니다.

    • Word 97의 경우 Microsoft Word 8.0 개체 라이브러리를 클릭합니다.

  3. Form1에 CommandButton을 배치합니다.

  4. 다음 코드를 Form1의 코드 창에 복사합니다.

          Option Explicit
    
          Private Sub Command1_Click()
             Dim oWord As Word.Application
             Dim oDoc As Word.Document
             Dim oRange as Word.Range
    
             Set oWord = CreateObject("Word.Application")
             With oWord
                 .Visible = True
                 .Activate
                 .WindowState = wdWindowStateNormal
             End With
    
             Set oDoc = oWord.Documents.Add
             MsgBox "Document open", vbMsgBoxSetForeground
             With oDoc
                 .PageSetup.LeftMargin = InchesToPoints(1.25)
             End With
    
             ' This example inserts text at the end of section one.
             Set oRange = ActiveDocument.Sections(1).Range
             With oRange
                 .MoveEnd Unit:=wdCharacter, Count:= -1
                 .Collapse Direction:=wdCollapseEnd
                 .InsertParagraphAfter
                 .InsertAfter "End of section."
             End With
    
             With oDoc
                 .Saved = True
             End With
    
             Set oRange = Nothing
             Set oDoc = Nothing
             oWord.Quit
             Set oWord = Nothing
          End Sub
    
  5. 실행 메뉴에서 시작을 클릭하거나 F5 키를 눌러 프로그램을 시작합니다.

  6. CommandButton을 클릭합니다. 오류가 발생하지 않습니다. 그러나 Word 대한 참조가 만들어졌으며 릴리스되지 않았습니다.

  7. CommandButton을 다시 클릭하고 이전에 설명한 오류가 표시됩니다.참고 코드가 oWord 개체 변수를 사용하여 호출하기 전에 InchesToPoints 메서드를 참조하기 때문에 오류가 발생합니다.

  8. 프로젝트를 중지하고 다음 줄을 변경합니다.

    .PageSetup.LeftMargin = InchesToPoints(1.25)
    

    -받는 사람-  

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
    
  9. 프로그램을 다시 실행합니다. 그런 다음 CommandButton을 클릭합니다. 오류가 발생하지 않습니다.

  10. CommandButton을 다시 클릭하고 오류가 발생합니다.참고 코드가 oWord 개체 변수를 사용하여 호출하기 전에 ActiveDocument 섹션 1의 Range 개체를 참조하기 때문에 오류가 발생합니다.

  11. 프로젝트를 중지하고 다음 줄을 변경합니다.

    Set oRange = ActiveDocument.Sections(1).Range
    

    -받는 사람-  

    Set oRange = oWord.ActiveDocument.Sections(1).Range
    
  12. 프로그램을 다시 실행합니다. 오류 없이 코드를 여러 번 실행할 수 있습니다.

Word 자동화하는 Visual Basic 프로젝트를 빌드할 때 프로젝트에 Microsoft Word 개체 라이브러리에 대한 참조가 있는 경우 Word 개체 모델의 개체, 메서드 및 속성에 대한 샘플 코드는 Word 도움말 파일에서 사용할 수 있습니다. 코드의 키 단어 위에 커서가 있으면 F1 키를 눌러 적용 가능한 도움말 텍스트가 표시됩니다.도움말 항목의 샘플 코드는 Microsoft Word Visual Basic for Applications 코드입니다. Visual Basic 코드에 필요한 개체 참조는 표시되지 않습니다. 한정자를 적절하게 추가해야 합니다.

참고 자료

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하세요.

178510 PRB: 개체 '_Global'의 Excel Automation 메서드 실패

Office 애플리케이션 자동화에 대한 자세한 내용은 아래 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 확인합니다.

Word 개체 모델 개요

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

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