現在オフラインです。再接続するためにインターネットの接続を待っています

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

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

この記事は、以前は次の 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 ExplicitDim oDocument As ObjectPrivate 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 IfEnd SubPrivate 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 WithEnd SubPrivate Sub Form_Unload(Cancel As Integer)   Set oDocument = NothingEnd SubPrivate Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, _URL As Variant)   On Error Resume Next   Set oDocument = pDisp.Document   MsgBox "File opened by: " & oDocument.Application.NameEnd 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 のドキュメント オブジェクト モデルにアクセスする
web browser kbActiveDocs kbExcel kbVBp500 kbVBp600 kbWebBrowser kbPowerPt kbWord WD2007 XL2007
プロパティ

文書番号:243058 - 最終更新日: 06/14/2007 02:35:48 - リビジョン: 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
フィードバック