C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: WebBrowserのDocument取得方法


(過去ログ 50 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■27215 / inTopicNo.1)  WebBrowserのDocument取得方法
  
□投稿者/ まりも (3回)-(2008/10/30(Thu) 14:47:49)

分類:[.NET 全般] 

vb.net2008
excel2000 です。

先程質問したまりもです。
WebBrowserのExcelをボタンクリックで操作するコードを書いている途中なのですが、最初の部分でつまづいてしまいました。

http://blogs.wankuma.com/naka/archive/2005/07/05/16742.aspx
上記のURLの所に
>WebBrowser が Active ドキュメントをホストしている場合、WebBrowser.Document はその Active ドキュメントのドキュメントになっているはずです(IHTMLDocument ではありません)。なので、Document を経由すれば一通りのことができるはずです。
>Excel.Workbook book = (Excel.Workbook)axWebBrowser1.Document;
と書いており、下記のように書いてみたのですがうまくいきません。

Dim webBrowser As System.Windows.Forms.WebBrowser

webBrowser = Me.WebBrowser1

webBrowser.Navigate("c:\test.xls")

Dim book As Excel.Workbook = CType(webBrowser.Document, Excel.Workbook)

この webBrowser.Documentが常にNothingなのが原因みたいなのですが
上のURLに書いている内容だとこれで取得できると思うのですが・・・
因みに webBrowser.Navigate("c:\test.xls") は正常に動作しており、Bookの内容が表示されます。

どなたかご教示お願いします。
引用返信 編集キー/
■27218 / inTopicNo.2)  Re[1]: WebBrowserのDocument取得方法
□投稿者/ Hongliang (313回)-(2008/10/30(Thu) 14:58:44)
Navigate はナビゲートの完了を待たずに処理を返すので、その直後ではまだ Document が用意しきれていません。
DocumentCompleted イベントまで待ってください。
引用返信 編集キー/
■27220 / inTopicNo.3)  Re[2]: WebBrowserのDocument取得方法
□投稿者/ まりも (4回)-(2008/10/30(Thu) 15:49:48)
No27218 (Hongliang さん) に返信
> Navigate はナビゲートの完了を待たずに処理を返すので、その直後ではまだ Document が用意しきれていません。
> DocumentCompleted イベントまで待ってください。

Hongliang様、ご回答ありがとうございます。
DocumentCompletedイベント終了後にDocumentを取得してみたのですが、やはりNothingとなってしまいます。
HTMLをNavigateするとDocumentを取得できるみたいです。
ExcelのVersionが2000というのがだめなのでしょうか・・・

下記のように試して見ました。
Formクラスに下記のコードを書き、WebBrowserとButtonを配置します。

Imports Excel
Imports Office

Public Class Form1

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
MsgBox("DocumentCompleted終了しました。")
End Sub



Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

WebBrowser1.Navigate("c:\test.csv")

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim obj As Object = WebBrowser1.Document
Stop
End Sub
End Class

Load→WebBrowser1_DocumentCompletedイベント発生→
ボタンをクリックし、Stopで止まった時にobj変数とWebBrowser1.Document内容を確認しました。



宜しくお願いします。
引用返信 編集キー/
■27221 / inTopicNo.4)  Re[3]: WebBrowserのDocument取得方法
□投稿者/ Hongliang (314回)-(2008/10/30(Thu) 16:08:32)
2008/10/30(Thu) 16:09:13 編集(投稿者)

あー、System.Windows.Forms.WebBrowser の Document プロパティじゃ無理でしたね。IHTMLDocument のラップですから。
WebBrowser.ActiveXInstance の方の Document を使ってみてください。
引用返信 編集キー/
■27224 / inTopicNo.5)  Re[4]: WebBrowserのDocument取得方法
□投稿者/ まりも (5回)-(2008/10/30(Thu) 16:41:43)
No27221 (Hongliang さん) に返信
> 2008/10/30(Thu) 16:09:13 編集(投稿者)
>
> あー、System.Windows.Forms.WebBrowser の Document プロパティじゃ無理でしたね。IHTMLDocument のラップですから。
> WebBrowser.ActiveXInstance の方の Document を使ってみてください。

Hongliang様ありがとうございます。
WebBrowser.ActiveXInstance.Document でうまくいきました!
感動しました!!

以下ソースです
Imports Excel
Imports Office

Public Class Form1

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
MsgBox("DocumentCompleted終了しました。")
End Sub



Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

WebBrowser1.Navigate("c:\test.csv")

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim book As Excel.Workbook = CType(WebBrowser1.ActiveXInstance.Document, Excel.Workbook)

Dim sheet As Excel.Worksheet = book.Worksheets(1)
sheet.Cells(1, 1).value = "書込み成功!!!"
End Sub
End Class


また宜しくお願いします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -