WebBrowser コントロールを使用して Office ドキュメントを開く方法

文書翻訳 文書翻訳
文書番号: 243058 - 対象製品
この記事は、以前は次の ID で公開されていました: JP243058
すべて展開する | すべて折りたたむ

目次

概要

Visual Basic で直接 Office ドキュメントを表示して作業するときに、OLE コンテナ コントロールを使用して埋め込み OLE オブジェクトを作成するのではなく、既存のドキュメントへのリンクを作成してそのドキュメントを埋め込み ActiveX ドキュメント オブジェクトとして表示する必要がある場合、Microsoft WebBrowser コントロールを使用して問題を解決することができます。

この資料では、WebBrowser コントロールを使用して、既存の Office ドキュメントを Visual Basic で表示する方法について説明します。

詳細

ActiveX ドキュメントは埋め込み可能な OLE オブジェクトで、その動作は従来の OLE オブジェクトよりも ActiveX コントロールに似ています。通常の埋め込みオブジェクトとは異なり、ActiveX ドキュメントは大規模なドキュメントに含めるためのオブジェクトとしては設計されていません。単に Internet Explorer などのビューアで表示されるか、他のドキュメントと共に単一のリソース (バインダー ファイルなど) に連結される、それ自体で完結したドキュメントと見なされます。

現在の Microsoft Visual Basic では、ActiveX ドキュメントを直接ホストすることはサポートされていませんが、Internet Explorer と WebBrowser コントロールを使用すると、この制約を回避できます。ただし、WebBrowser コントロール (Shdocvw.dll) は Internet Explorer の一部なので、Internet Explorer がインストールされているシステムでのみ使用することができます。

Office ドキュメントを表示する Visual Basic アプリケーションを作成する

Office ドキュメントを表示する Visual Basic アプリケーションを作成するには、次の手順を実行します。
  1. Visual Basic を起動し、新規の標準 EXE プロジェクトを作成します。デフォルトで Form1 が作成されます。
  2. [プロジェクト] メニューの [コンポーネント] をクリックして、[コンポーネント] ダイアログ ボックスを開きます。[コンポーネント] ダイアログ ボックスで [Microsoft Common Dialog Control] と [Microsoft Internet Controls] チェック ボックスをオンにします。[OK] をクリックすると、これらの項目がツールボックスに追加されます。
  3. Form1 に、WebBrowser コントロール、CommonDialog コントロール、および CommandButton のインスタンスを追加します。
  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"
       ' For the 2007 Microsoft Office documents, change the .Filter parameter of the 
       ' With CommonDialog1 statement to:
       ' .Filter = "Office Documents " & _
       '      "(*.docx, *.xlsx, *.pptx)|*.docx;*.xlsx;*.pptx"
       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 コントロールを 2007 Microsoft Office プログラムで使用する際の注意

WebBrowser コントロールを使用する際には以下の点に注意してください。
  • WebBrowser コントロールは非同期でドキュメントを参照します。これは、WebBrowser1.Navigate を呼び出すと、ドキュメントが完全に読み込まれる前に、Visual Basic アプリケーションにドキュメントの制御が戻ることを意味します。読み込まれるドキュメントをオートメーションで起動する場合は、NavigateComplete2 イベントを使用して、ドキュメントの読み込みの完了が通知されるようにする必要があります。Office ドキュメント オブジェクトへの参照を取得するには、WebBrowser オブジェクトの Document プロパティを使用します。上記のコードでは、この参照が "oDocument" に設定されています。
  • 1 つのプロジェクト内で複数の WebBrowser コントロールを使用する場合、各コントロールに同じ種類の Office ドキュメント (すべて Word 文書、すべて Excel ワークシートなど) を読み込むと、いくつかの問題が発生することが確認されています。そのため、1 つのプロジェクトに使用するコントロールは 1 つとし、一度に表示するドキュメントも 1 つとすることをお勧めします。
  • WebBrowser コントロールに表示されているコンテンツを消去するには、別のコマンド ボタンの Click イベント (またはコード内のその他適当な場所) で、以下のコードを使用してデフォルトの空白ページを参照します。
       WebBrowser1.Navigate "about:blank"
    					

WebBrowser コントロールを Microsoft Office 2003 プログラムおよびそれ以前のバージョンの Office で使用する際の注意

WebBrowser コントロールを使用する際には以下の点に注意してください。
  • WebBrowser コントロールは非同期でドキュメントを参照します。これは、WebBrowser1.Navigate を呼び出すと、ドキュメントが完全に読み込まれる前に、Visual Basic アプリケーションにドキュメントの制御が戻ることを意味します。読み込まれるドキュメントをオートメーションで起動する場合は、NavigateComplete2 イベントを使用して、ドキュメントの読み込みが完了したことを通知されるようにする必要があります。Office ドキュメント オブジェクトへの参照を取得するには、渡された WebBrowser オブジェクトの Document プロパティを使用します。上記のコードでは、このプロパティが "oDocument" に設定されています。
  • WebBrowser コントロールでは、メニューのマージはサポートされていません。Visual Basic のメニューに、ドキュメントのメニュー項目を表示する必要がある場合は、WebBrowser コントロールではなく、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
    					
  • 1 つのプロジェクト内で複数の WebBrowser コントロールを使用する場合、各コントロールに同じ種類の Office ドキュメント (すべて Word 文書、すべて Excel ワークシートなど) を読み込むと、いくつかの問題が発生することが確認されています。そのため、1 つのプロジェクトに使用するコントロールは 1 つとし、一度に表示するドキュメントも 1 つとすることをお勧めします。

    最も一般的なのは、Office コマンド バーが無効になっているように見えるという問題です。同一のフォームに WebBrowser コントロールが 2 つあり、その両方で Word 文書を読み込む場合に、上記の方法のいずれかを使用してツール バーを表示すると、片方のツール バーのセットのみが有効になり、正しく機能します。もう一方は無効になり、使用できません。
  • WebBrowser コントロールに表示されているコンテンツを消去するには、別のコマンド ボタンの Click イベント (またはコード内のその他適当な場所) で、以下のコードを使用してデフォルトの空白ページを参照します。
       WebBrowser1.Navigate "about:blank"
    					

関連情報

Visual Basic の WebBrowser コントロールの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
162719 Visual Basic 5.0 から WebBrowser コントロールを使用する方法
188271 VB から Web Browser コントロールの内容を印刷する方法
191692 [PRB] ディストリビューション ウィザードで作成したセットアップ パッケージに Shdocvw.dll が含まれない
238313 [PRB] Visual Basic から Internet Explorer のドキュメント オブジェクト モデルにアクセスする

プロパティ

文書番号: 243058 - 最終更新日: 2007年6月14日 - リビジョン: 6.0
この資料は以下の製品について記述したものです。
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002
  • Microsoft Word 2000
  • Microsoft Word 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
キーワード:?
kbexpertiseinter kbhowto KB243058
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com