起動済みのIE(インターネットエクスプローラ)に表示されているサイトのIEオブジェクトを参照して
s = IE.Document.Selection.createRange().Text
を実行すると、IE上の選択されているテキストが取得されるのですが、
なぜか次の外国のサイトだけ選択テキストが取得できませんでした。
http://vbnet.mvps.org/index.html
取得には条件があるのでしょうか?
どういうときに取得されないのかご存知の方、教えて頂けないでしょうか?
また、必ず取得する方法がありましたらご教授願えませんでしょうか?
よろしくお願いいたします。
Document.ExecCommandでクリップボードにコピーするとか。
Command Identifiers
http://msdn.microsoft.com/en-us/library/ms533049(VS.85).aspx
フレーム構造をもったサイトの場合、それぞれのフレームの中身および frameset を定義している html について Document オブジェクトが作成されます。
IE.Document は直下のドキュメントを指しますから、そういうサイトの場合 frameset が定義されている html ファイルです。範囲選択するのは普通その子フレームのドキュメントでしょうから、IE.Document には選択範囲は含まれていません。
IE.Document の window から frames でフレームを扱うウィンドウを列挙し、それぞれの document について調べていく必要があります。
子フレームが更に frameset を定義してるなら孫フレームも見に行く必要がありますので、再帰的構造にしないと不足するでしょう。
判定は range の text が Nothing かどうかでできるかな。document が取れないとか createRange 失敗するとかの可能性もありますが。
熊谷隆史さん、Hongliangさん、ご回答ありがとうございます。
簡単に取得できるもだとばかり思っていたのですが、こんなに大変だとは・・・
やはりクリップボード経由で取得する方が簡単で確実のようですね。
ありがとうございました。
「解決」のチェックを忘れていました。
失礼しました。
ツイート | ![]() |