WebBrowserを全選択して、TextBoxまたはRichTextBoxにはりつける方法。

解決


tks  2005-01-13 22:47:11  No: 118857

WebBrowserを全選択して、テキストをTextBoxまたはRichTextBoxに貼り付けたいのですが…
2004/08/12(木) 14:16:22のpiroさんの
「■ WebBrowserを全選択してHTML形式でエクセルに貼りつけるには?」
という質問に対する回答を参考にしてみましたが、いまいち理解できません。貼り付ける内容はテキストのみでよいのですが…
どなたかご教示お願いいたします。


魔界の仮面弁士  2005-01-13 23:06:52  No: 118858

> 2004/08/12(木) 14:16:22のpiroさんの
この記事ですね?
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200408/04080066.txt

開発環境が書かれていないので、上記記事同様、VB6を前提に回答しますが
あのサンプルでいえば、
    '全選択して
    WebBrowser1.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
    'それをコピー
    WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
の部分だけで、コピー動作は完了します。

そして、クリップボードにコピーされた情報の中から、
テキスト情報を取得したい場合には、
   Text1.Text = Clipboard.GetText(vbCFText)
のようにして取り出せばOKです。


tks  2005-01-14 00:55:48  No: 118859

申し訳ありません。開発はMicrosoft AccessのVisual Basic 6.0で行っています。
全選択、コピーまでの過程は
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200408/04080066.txt
を参考にさせて頂き、完了しましたが、貼り付けが無理です。
Me!RichTextBox6 = Clipboard.GetText(vbCFText)
または
RichTextBox6 = Clipboard.GetText(vbCFText)
と記述すると(ここも正しいのかいまいちわかりませんが…)
vbCFTextにチェックが入って、
「コンパイルエラー、変数が定義されていません。」
というエラーメッセージが出ます。超初心者なので、牛歩ですすんでいる感じで申し訳ありませんが、エラーや「vbCFText」の意味など教えていただきたいです。


魔界の仮面弁士  2005-01-14 01:40:20  No: 118860

> 申し訳ありません。開発はMicrosoft AccessのVisual Basic 6.0で行っています。

VBA6と言う事は……お使いの環境は、
Access 2000, 2002, 2003のいずれかですよね?

VBAの場合は、言語エンジンのバージョンではなく、
アプリケーション側のバージョンを記述してください。

> 全選択、コピーまでの過程
>   :
> を参考にさせて頂き、完了しましたが、貼り付けが無理です。
という事は、もはや WebBrowser は関係ないですね。(^^;

『クリップボード内のテキストを、(Access VBAにて)取得する方法』を
知りたい、という質問と解釈して回答します。

> Me!RichTextBox6 = Clipboard.GetText(vbCFText)
Clipboardは、VB用のオブジェクトです。VBAにはありません。
替わりに、RunCommandメソッドで代用してください。

1. 出力対象のTextBoxにSetFocusする。
2. RunCommandメソッドにacCmdPasteを指定して貼り付け。

厳密には、acCmdPaste は文字列の貼り付けではありませんが、
とりあえずは、目的が果たせるかと思います。
もしくは、『SendKeys "^v", True』を使うという手もあります。

もし、これらの手法では都合が悪い場合は、APIで処理する事が可能です。
http://www.loadsystem.net/api/


魔界の仮面弁士  2005-01-14 01:47:33  No: 118861

あとは、clipboardData オブジェクトのgetDataメソッドを使うという手法もあります。

[ClipboardData Object]
http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/clipboarddata.asp

Private Sub コマンド2_Click()
    With ActiveXコントロール0.Object
        .ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
        .ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT

        テキスト1.Value = .Document.parentWindow.clipboardData.getData("Text")
    End With
End Sub


魔界の仮面弁士  2005-01-14 01:50:45  No: 118862

おまけ。
クリップボードを経由させず、テキストを直接取得する方法。

テキスト1.Value = ActiveXコントロール0.Object.Document.body.innerText


tks  2005-01-14 02:01:18  No: 118863

魔界の仮面弁士さんありがとうございます。
1. 出力対象のTextBoxにSetFocusする。
2. RunCommandメソッドにacCmdPasteを指定して貼り付け。
で一部のエラーを除いて解決できました。迅速な回答本当にありがとうございました。


tks  2005-01-14 02:02:10  No: 118864

解決チェックし忘れました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加