2007년 3월 29일 목요일

WebBrowser 컨트롤을 사용하여 Office 문서를 여는 방법

WebBrowser 컨트롤을 사용하여 Office 문서를 여는 방법

기술 자료 ID : 243058
마지막 검토 : 2006년 3월 30일 목요일
수정 : 4.2

요약

Office 문서 작업을 할 때 이러한 문서를 Visual Basic에 직접 표시하려는 경우 OLE 컨테이너 컨트롤을 사용하여 포함된 OLE 개체를 만들지 않고 기존 문서에 연결한 다음 해당 문서를 현재 위치의 ActiveX 문서 개체로 열고자 할 수 있습니다. Microsoft WebBrowser 컨트롤을 사용하면 이 작업을 수행할 수 있습니다.

이 문서에서는 기존 Office 문서를 탐색하여 WebBrowser 컨트롤을 통해 Visual Basic에 표시하는 방법을 보여 줍니다.

위로 가기

추가 정보

ActiveX 문서는 삽입 가능한 OLE 개체로서 기존 OLE 개체보다는 ActiveX 컨트롤과 더욱 비슷하게 동작합니다. 일반적인 포함 개체와 달리 ActiveX 문서는 더 큰 문서에 포함되도록 설계되지 않았습니다. 대신, ActiveX 문서는 자체적으로 완전한 문서로 간주되어 Internet Explorer와 같은 뷰어를 사용하여 표시되거나 Binder 파일 같은 다른 문서와 함께 단일 리소스로 수집됩니다.

Microsoft Visual Basic에서는 현재 ActiveX 문서를 직접 호스트하지는 않지만 Internet Explorer 및 해당 WebBrowser 컨트롤 기능을 사용하면 이러한 제한 사항을 해결할 수 있습니다. WebBrowser 컨트롤(Shdocvw.dll)은 Internet Explorer의 일부분으로 Internet Explorer를 설치한 시스템에서만 사용할 수 있습니다.

위로 가기

Office 문서를 여는 Visual Basic 응용 프로그램 만들기

Office 문서를 여는 Visual Basic 응용 프로그램을 만들려면 다음 단계를 수행하십시오.
1. Visual Basic을 시작하고 표준 프로젝트를 새로 만듭니다. 기본적으로 Form1이 만들어집니다.
2. 프로젝트 메뉴에서 구성 요소를 선택하여 구성 요소 대화 상자를 엽니다. 구성 요소 대화 상자에서 Microsoft Common Dialog Control 및 Microsoft Internet Controls에 대한 참조를 추가합니다. 확인을 눌러 도구 상자에 해당 항목을 추가합니다.
3. WebBrowser 컨트롤, CommonDialog 컨트롤 및 CommandButton 인스턴스를 Form1에 추가합니다.
4. 그런 다음 Form1의 코드 창에 다음 코드를 추가합니다.
Option Explicit

Dim oDocument As Object

Private Sub Command1_Click()
   Dim sFileName As String
   
 ' Find an Office file...
   With CommonDialog1
      .FileName = ""
      .ShowOpen
      sFileName = .FileName
   End With
   
 ' If the user didn't cancel, open the file...
   If Len(sFileName) Then
      Set oDocument = Nothing
      WebBrowser1.Navigate sFileName
   End If
End Sub

Private Sub Form_Load()
   Command1.Caption = "Browse"
   With CommonDialog1
      .Filter = "Office Documents " & _
      "(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.ppt"
      .FilterIndex = 1
      .Flags = cdlOFNFileMustExist Or cdlOFNHideReadOnly
   End With
End Sub

Private Sub Form_Unload(Cancel As Integer)
   Set oDocument = Nothing
End Sub

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, _
URL As Variant)
   On Error Resume Next
   Set oDocument = pDisp.Document

   MsgBox "File opened by: " & oDocument.Application.Name
End Sub
					
5. F5 키를 눌러 이 프로젝트를 실행합니다. Browse 단추를 선택하면 Word, Excel 또는 PowerPoint 파일을 탐색할 수 있는 열기 대화 상자가 나타납니다. 열기를 선택하면 문서가 WebBrowser 컨트롤 내에서 열립니다. 그러면 파일을 연 Office 응용 프로그램의 이름이 표시된 메시지 상자가 나타납니다.

위로 가기

WebBrowser 컨트롤 사용 시 고려 사항

WebBrowser 컨트롤을 사용할 때는 다음과 같은 항목을 고려해야 합니다.
? WebBrowser 컨트롤은 문서를 비동기적으로 탐색합니다. 즉, WebBrowser1.Navigate를 호출하면 문서를 완전히 로드하기 전에 해당 Visual Basic 응용 프로그램에 컨트롤이 반환됩니다. 포함된 문서를 자동화할 계획이라면 문서가 완전히 로드된 시기를 알 수 있도록 NavigateComplete2 이벤트를 사용해야 합니다. Office 문서 개체에 대한 참조를 가져오기 위해 전달되는 WebBrowser 개체의 Document 속성(앞에서 설명한 코드에서는 oDocument로 설정됨)을 사용합니다.
? WebBrowser 컨트롤은 메뉴 병합을 지원하지 않습니다. 문서의 메뉴 항목이 Visual Basic 메뉴와 함께 나타나도록 해야 하는 경우에는 OLE 컨테이너 컨트롤을 대신 사용해야 합니다.
? WebBrowser 컨트롤은 대개 Office 문서를 표시하기 전에 도킹된 모든 도구 모음을 숨깁니다. 다음과 같은 코드를 사용하여 자동화를 통해 움직이는 도구 모음을 표시할 수 있습니다.
   With oDocument.Application.CommandBars("Standard")
      .Position = 4 '[msoBarFloating]
      .Visible = True
   End With
					
또한 최신 Internet Explorer 버전(5.0 이상)을 사용하면 다음 코드를 통해 도킹된 도구 모음을 표시할 수 있습니다.
 ' This is a toggle option, so call it once to show the 
 ' toolbars and once to hide them. This works with Internet Explorer 5
 ' but often fails to work properly with earlier versions...
   WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER
					
? 하나의 프로젝트에서 둘 이상의 WebBrowser 컨트롤을 사용하여 동일한 종류의 Office 문서를 로드하면 문제가 발생하는 것으로 알려져 있습니다. 즉, 컨트롤이 모두 Word 문서만 로드하거나 Excel 스프레드시트만 로드하는 경우 문제가 발생합니다. 프로젝트당 컨트롤을 하나만 사용하고 한 번에 한 가지 문서만 탐색하는 것이 좋습니다.

가장 일반적인 문제는 Office 명령 모음이 사용할 수 없는 것처럼 나타나는 것입니다. 같은 폼에 WebBrowser 컨트롤이 두 개 있고, 두 컨트롤 모두 Word 문서를 로드하며, 앞의 예제 코드를 사용하여 도구 모음을 표시한 경우 하나의 도구 모음만 활성화되고 제대로 작동합니다. 다른 도구 모음은 사용할 수 없는 상태가 됩니다.
? 다른 명령 단추의 Click 이벤트(또는 다른 적절한 코드 부분)에서 WebBrowser의 현재 내용을 지우려면 아래의 코드를 사용하여 기본 빈 페이지로 이동하도록 합니다.
   WebBrowser1.Navigate "about:blank"
					

위로 가기

참조

Visual Basic의 WebBrowser 컨트롤에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
162719 (http://support.microsoft.com/kb/162719/) Visual Basic 5.0에서 WebBrowser 컨트롤을 사용하는 방법
188271 (http://support.microsoft.com/kb/188271/) VB에서 Web Browser 컨트롤의 내용을 인쇄하는 방법
191692 (http://support.microsoft.com/kb/191692/) PRB: Shdocvw.dll이 PDW 설치 패키지에 포함되지 않는다
238313 (http://support.microsoft.com/kb/238313/) PRB: Visual Basic에서 Internet Explorer 문서 개체 모델 액세스




?Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.

위로 가기


본 문서의 정보는 다음의 제품에 적용됩니다.
? Microsoft Office Excel 2003
? Microsoft Excel 2002 Standard Edition
? Microsoft Excel 2000 Standard Edition
? Microsoft Excel 97 Standard Edition
? Microsoft Visual Basic 6.0 Professional Edition
? Microsoft Visual Basic 5.0 Professional Edition
? Microsoft Visual Basic 6.0 Enterprise Edition
? Microsoft Visual Basic 5.0 Enterprise Edition
? Microsoft Office PowerPoint 2003
? Microsoft PowerPoint 2002 Standard Edition
? Microsoft PowerPoint 2000 Standard Edition
? Microsoft PowerPoint 97 Standard Edition
? Microsoft Office Word 2003
? Microsoft Word 2002 Standard Edition
? Microsoft Word 2000 Standard Edition
? Microsoft Word 97 Standard Edition

위로 가기

댓글 없음:

댓글 쓰기