Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9393 / 13644 ツリー ←次へ | 前へ→

【27613】WebBrowserコントロールのコピーについて ヨワヒム 05/8/12(金) 22:45 質問[未読]
【27614】Re:WebBrowserコントロールのコピーについて かみちゃん 05/8/13(土) 1:35 回答[未読]
【27615】Re:WebBrowserコントロールのコピーについて ヨワヒム 05/8/13(土) 9:53 発言[未読]
【27616】Re:WebBrowserコントロールのコピーについて かみちゃん 05/8/13(土) 10:05 発言[未読]
【27623】Re:WebBrowserコントロールのコピーについて ヨワヒム 05/8/13(土) 19:02 お礼[未読]
【27622】Re:WebBrowserコントロールのコピーについて Kein 05/8/13(土) 13:18 回答[未読]
【27624】Re:WebBrowserコントロールのコピーについて ヨワヒム 05/8/13(土) 19:14 お礼[未読]

【27613】WebBrowserコントロールのコピーについて
質問  ヨワヒム  - 05/8/12(金) 22:45 -

引用なし
パスワード
   はじめまして。VBA初心者ですが、WebBrowserコントロールについて
質問させていただきます。

Excel内にWebBrowserコントロールを使ってWebページを表示させてます。
WebBrowserの内容をコピー&ペーストしたいと考えてますが、
コピーがうまくいきません。

WebBrowserのオブジェクト名:WebBrowser1

With WebBrowser1
  .SetFocus
  Application.SendKeys "^a", True
  Application.SendKeys "^c", True
  DoEvents
  ActiveCell.Select
End With

これを実行すると
.SetFocus
のところで「オブジェクトはこのプロパティまたはメソッドを
サポートしていません。」と出てしまって困ってます。
よろしくお願いいたします。

【27614】Re:WebBrowserコントロールのコピーにつ...
回答  かみちゃん E-MAIL  - 05/8/13(土) 1:35 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Excel内にWebBrowserコントロールを使ってWebページを表示させてます。
>WebBrowserの内容をコピー&ペーストしたい

どういう情報をどのように取得したいのかわかりませんが、ちょっと発想を変えて
以下のような感じでいかがでしょうか?

コマンドボタンをクリックしたら、指定されたページを表示し、表示が完了したら
そのテキスト文字列すべてをアクティブセルに取得するというものです。

Private Sub CommandButton1_Click()
 '指定したURLのホームページを表示
 Me.WebBrowser1.Navigate "http://www.vbalab.net/"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
 'Textをアクティブセルに出力
 ActiveCell.Value = Me.WebBrowser1.Document.Body.innerText
End Sub

【27615】Re:WebBrowserコントロールのコピーにつ...
発言  ヨワヒム  - 05/8/13(土) 9:53 -

引用なし
パスワード
   かみちゃんさん、早速の回答ありがとうございます。

>どういう情報をどのように取得したいのかわかりませんが、

すいません、説明が足りませんでした。
今回やりたいことは、CGIを使ったWebページ(例えばチャットとかCGIゲームとか)を
Excel上に表示して、「WebBrowser上で[全てを選択]→[コピー]」という作業を
自動化できないか考えております。ですので、
・アドレス指定での再読み込みはできない
・「現在の内容」ではなく「現在表示されてる内容」を取得したい
というものです。
また、その後エクセル上での処理の都合で、「文字列の取得」ではなく
「WebBrowser内のコピー(その後エクセル上にペースト)」の方が望ましいと
考えています。

質問する立場でこまごまと注文したみたいで申し訳ありませんが、
アドバイス等ありましたらよろしくお願い致します。

【27616】Re:WebBrowserコントロールのコピーにつ...
発言  かみちゃん  - 05/8/13(土) 10:05 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>今回やりたいことは、CGIを使ったWebページ(例えばチャットとかCGIゲームとか)を
>Excel上に表示して、「WebBrowser上で[全てを選択]→[コピー]」という作業を
>自動化できないか

それであれば、私には、わかりませんので、他の方からの回答をお待ちください。

>また、その後エクセル上での処理の都合で、「文字列の取得」ではなく
>「WebBrowser内のコピー(その後エクセル上にペースト)」の方が望ましい

「文字列の取得」と「エクセル上にペースト」の違いがよくわかりません。

>質問する立場でこまごまと注文したみたい

そんなことはないのですが、できるだけ、初めから具体的なことを書かれたほうが
よろしいかと思います。

【27622】Re:WebBrowserコントロールのコピーにつ...
回答  Kein  - 05/8/13(土) 13:18 -

引用なし
パスワード
   With WebBrowser1
  .ExecWB 17, 2, 0, 0
  .ExecWB 12, 2, 0, 0
End With

これでクリップボードに画面のコピーが格納されます。あとは Pasteメソッドなどで
シートに貼り付けますが、テキスト情報のみでよければ

St = .Document.All(0).InnerText

などと、直接的に文字列を変数に格納する方が、効率的かと思います。

ちなみに ExecWBメソッドの引数については・・

1.OLECMDID_OPEN  [ファイル]-[開く]
2.OLECMDID_NEW  [ファイル]-[新規作成]
3.OLECMDID_SAVE [上書き保存]
4.OLECMDID_SAVEAS [ファイル]-[名前をつけて保存]
5.OLECMDID_SAVECOPYAS [ファイル]-[SAVE COPY AS]
6.OLECMDID_PRINT [ファイル]-[印刷]
7.OLECMDID_PRINTPREVIEW [Print Preview]
8.OLECMDID_PAGESETUP [ファイル]-[ページ設定]
9.OLECMDID_SPELL Tool-Spelling ?
10.OLECMDID_PROPERTIES [ファイル]-[プロパティ]
11.OLECMDID_CUT [編集]-[切り取り]
12.OLECMDID_COPY [編集]-[コピー]
13.OLECMDID_PASTE [編集]-[貼り付け]
14.OLECMDID_PASTESPECIAL ?
15.OLECMDID_UNDO [編集]-[元に戻す]
16.OLECMDID_REDO [編集]-[やり直し]
17.OLECMDID_SELECTALL [編集]-[全て選択]
18.OLECMDID_CLEARSELECTION 選択を解除
19.OLECMDID_ZOOM
20.OLECMDID_GETZOOMRANGE
21.OLECMDID_UPDATECOMMANDS
22.OLECMDID_REFRESH
23.OLECMDID_STOP
24.OLECMDID_HIDETOOLBARS
25.OLECMDID_SETPROGRESSMAX
26.OLECMDID_SETPROGRESSPOS
27.OLECMDID_SETPROGRESSTEXT
28.OLECMDID_SETTITLE
29.OLECMDID_SETDOWNLOADSTATE
30.OLECMDID_STOPDOWNLOAD
31.OLECMDID_ONTOOLBARACTIVATED
32.OLECMDID_FIND
33.OLECMDID_DELETE
34.OLECMDID_HTTPEQUIV
35.OLECMDID_HTTPEQUIV_DONE
36.OLECMDID_ENABLE_INTERACTION
37.OLECMDID_ONUNLOAD
38.OLECMDID_PROPERTYBAG2
3.OLECMDID_PREREFRESH

cmdexecoptは

  OLECMDEXECOPT_DODEFAULT
  OLECMDEXECOPT_DONTPROMPTUSER
  OLECMDEXECOPT_PROMPTUSER
  OLECMDEXECOPT_SHOWHELP

のような種類がありますが、中には使えないもの・無反応なものもあるようです。
頭の数値が、上記のコードで使った数値定数になります。
ついでに ExecWBメソッドの解説も含めて、WebBrowserオブジェクトの全ての
プロパティやメソッドの解説は
http://www.d6.dion.ne.jp/~ikenji_o/works/sad/reference/webbrowser/objects/WebBrowser.htm
に、あります。

【27623】Re:WebBrowserコントロールのコピーにつ...
お礼  ヨワヒム  - 05/8/13(土) 19:02 -

引用なし
パスワード
   ありがとうございました。
質問が要領を得てなくてすいませんでした。
以後気をつけます。

>「文字列の取得」と「エクセル上にペースト」の違いがよくわかりません。

いちお、ここだけ説明させて頂きます。
WebBrowser上でコピー→エクセル上でペースト
という作業をやった場合、文字サイズ・文字色のデータも反映されますし、
Web上で改行があればエクセル上でも次の行のセルに貼り付けられます。
例えばチャットのイメージで

名前A:発言内容
名前B:発言内容
名前C:発言内容
名前A:発言内容

って表示されてる場合に、その後のエクセルの処理で「発言者別にソート」などと
いった処理を行なうのには文字列取得よりはコピペの方が便利だと思いましたので。

ということを最初から言えばよかったですね。失礼しました。
ありがとうございました。

【27624】Re:WebBrowserコントロールのコピーにつ...
お礼  ヨワヒム  - 05/8/13(土) 19:14 -

引用なし
パスワード
   Keinさん、ありがとうございました。

>With WebBrowser1
>  .ExecWB 17, 2, 0, 0
>  .ExecWB 12, 2, 0, 0
>End With
これで無事解決できました。

>ちなみに ExecWBメソッドの引数については・・
さらにもっといろいろなことができそうです。
よく見て勉強してみます。

ありがとうございました。

9393 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free