WebBrowserを全選択して、テキストをTextBoxまたはRichTextBoxに貼り付けたいのですが…
2004/08/12(木) 14:16:22のpiroさんの
「■ WebBrowserを全選択してHTML形式でエクセルに貼りつけるには?」
という質問に対する回答を参考にしてみましたが、いまいち理解できません。貼り付ける内容はテキストのみでよいのですが…
どなたかご教示お願いいたします。
> 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です。
申し訳ありません。開発は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」の意味など教えていただきたいです。
> 申し訳ありません。開発は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/
あとは、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
おまけ。
クリップボードを経由させず、テキストを直接取得する方法。
テキスト1.Value = ActiveXコントロール0.Object.Document.body.innerText
魔界の仮面弁士さんありがとうございます。
1. 出力対象のTextBoxにSetFocusする。
2. RunCommandメソッドにacCmdPasteを指定して貼り付け。
で一部のエラーを除いて解決できました。迅速な回答本当にありがとうございました。
解決チェックし忘れました。
ツイート | ![]() |