こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

WSHでWeb画面上の選択文字列をクリップボードにコピーするには

http://q.hatena.ne.jp/1131762882 (Windows【Perl】IEの選択文字列を取得できる?)
上記とほゞ同じ質問です。

やりたいこと
(1)インターネットエクスプローラのWeb画面上で、文字列を選択します。
(2)右クリックメニューから myscript.vbs実行
  IEの右クリックメニューをカスタマイズするhttp://phpspot.net/php/pgIE%82%CC%89E%83N%83%8A%83b%83N%83%81%83j%83%85%81%5B%82%F0%83J%83X%83%5E%83%7D%83C%83Y%82%B7%82%E9.html

myscript.vbsの内容
(1)IEで選択した文字列をクリップボードに貼り付ける
(2)起動中の不特定多数のPCについてWindowsOSバージョンとOfficeEXCELバージョンを入手してXLSTARTフォルダを特定
(3)XLSTARTにある特定ファイルにある特定マクロを実行
このうち、(2)と(3)については既にプログラムが出来ています。

特定マクロの内容
(1)クリップボードから入手したテキストについてイントラネットによる調査(既にプログラムが出来ています)

このようなことは可能でしょうか?

ここでvbsではクリップボードに貼り付けることができないそうですが、Internet Explorer を起動すればクリップボードを操作することができるそうです。
http://kandk.cafe.coocan.jp/nucleus/index.php?itemid=731

しかし、既にInternet Explorer は起動されているのでこのインスタンスを利用して「やりたいこと(1)」ができそうに思います。
WSHで考えていますが、超初心者なのでこれ以上判りません。
ここを中心にプログラムをご教示ください。

投稿日時 - 2009-10-22 14:19:51

QNo.5387427

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ExecWBはあくまでブラウザ内での処理です。
ブラウザで選択されている文字列はクリップボードを経由せず、ダイレクトに取得できます。

objIE.document.selection.createRange.text

投稿日時 - 2009-10-23 16:00:04

ANo.1

InternetExplorer.Applicationクラスを捕らえられれば、あとはExecWBでコピーコマンドを実行できます。問題は、

> 既にInternet Explorer は起動されているのでこのインスタンスを利用して・・・

ですね。これは、「起動済み IE」で検索すると、起動済みIEのインスタンス取得を含むサンプルがいくつか見つかるので検索してみてください。

インスタンスを取得できたら
objIE.ExecWB 12, 0
とすれば編集→コピーを実行します。
※objIEはインスタンスを格納した変数

ExecWBの引数は本家の情報が手っ取り早いかと。
http://msdn.microsoft.com/ja-jp/library/aa752117(en-us,VS.85).aspx

投稿日時 - 2009-10-23 03:50:28

補足

「やりたいこと(2)右クリックメニューから myscript.vbs実行」と書いたように、参考サイトにある事例でexec.htmlをmyscript.vbsに変えれば良いだけと考えていましたが、甘かったようでうまく動作しません。

質問の最初に出したPerlの事例ではmyscript.plも実行することもできるはずなので、右クリックで最初に実行させるファイルは必ずJavaScriptでなければならないのでしょうか。
さらに、そのJavaScriptのコードはmyscript.vbsを実行するだけの記述になるはずですが、Perlの事例ではそうなっていないように見えます。

JavaScriptもよく知らないので、もしお解かりなら教えてください。
よろしくお願いします。

投稿日時 - 2009-10-23 15:37:49

お礼

お世話様になります。

三流君VBA:IE操作については、あまり真剣に読んではいませんが良く知っています。
Shell.ApplicationのインスタンスもVBAでは良く使っていますが、WSHでは使ったことがありませんでした。
「objIE.ExecWB 12, 0」については全くノーマークで知りませんでしたがお蔭様で下記コードで使えることが良くわかりました。
ついでですが、最後のほうにコピーした文字をTextに入力して表示させてみたのですがエラー(ステートメントの末尾が不正ですとなります)になります。
この場合はどのようにすれば良いのでしょうか?
ご教示お願いします。

Dim objShell, objIE, n, Text
'これで、エクスプローラーのウインドウを取得する
Set objShell = CreateObject("Shell.Application")
'後ろから消してく。.Windowsでエクスプローラーとインターネットエクスプローラーにさわれる
For n = objShell.Windows.Count To 1 Step -1 'MAXから-1ひいてく感じ
Set objIE = objShell.Windows(n - 1) 'n番目のウインドウを代入
'.FullNameで普通のファイルエクスプローラーとIE(インターネットエクスプローラー)を区別する
If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE" Then
WScript.Echo objIE.document.URL
objIE.ExecWB 12, 0
Exit For
End If
Next
Text = objIE.ExecWB 13, 0
WScript.Echo Text
Set objShell = Nothing

投稿日時 - 2009-10-23 14:09:31

あなたにオススメの質問