http://oshiete1.goo.ne.jp/qa4624451.html
でダイアログボックスへの文字列の挿入を実現して
います。
sendkeysのターゲットを確実に取得したいのですが
どうすればいいでしょうか?
時々、違う窓にsendkeysしてしまいます。
No.4ベストアンサー
- 回答日時:
こんにちは。
昨日、返事をアップロードしてから、調べてみました。
ちょっと勝手なレスになってすみませんが、昨日の回答から、私自身の中では見通しが変わり、結論としては、UWSC などを使わざるを得ないという確信に変わりました。
実は、今までは、「三流」さんのところでも出ていますが、タグとIDをリストに取って、そこから、ひとつずつ当たるという方法をとっていました。自分の開発でも掲示板の回答でも、それほど多くなかったので、失敗したことがなかったのでした。
それで、IEに MS の IE Developer Tools アドオンをインストールして調べてみました。
分かっている人には、当たり前のことだと思うのですが、WebサイトのHTTLコードのサンプルサイトで、二種類の Input Type="File" があり、.Value値があっても、取れるものと取れないものの意味が分かりました。いつかは技術的に取れると思っていましたが、取れないものは、取れないのですね。
http://www.tohoho-web.com/html/input.htm
こちらは取れません。取れるIDなどがみあたりません。
Type="File" の説明に、このように書かれていました。
「ブラウザからWWWサーバーにファイルをアップロードする際に用います。入力フィールドの横には参照ボタンが表示されます。WWWサーバー側にはファイルを受け取るための特別なCGIスクリプトなどを設置しておく必要があります。セキュリティのために、初期値を設定したり、スクリプトで値を操作することはできません。」
http://www.tagindex.com/html_tag/form/input_file …
こちらは、取れるはずです。
こうしてみると、自動化のために、改めて、USWC を使わざるを得ないのかなって思いました。なお、USWCのExcel用の操作は、Proバージョンだそうで、Excelの子ウィンドウへの取得しにくいそうですが、GETACTIVEOLEOBJで、COMオブジェクト名で取得すれば操作できると思いますし、Excelから、直接でなくても、Excel外用のクリップボードに渡す方法もありますし、テキストファイルなどにしてしまっても良いです。今は、組み立ては頭の中だけで、コードにするとまったく違う内容になるかもしれません。
ありがとうございます。
何となく方向が見えてきた気がします。
実際取りかかってまた、いろいろと問題
が出てくると思いますが、そのときは
よろしくお願いいたします。
No.3
- 回答日時:
こんばんは。
>これだとVBAなしで単独で作業ができるように思いましたが。
内容にもよりますが、それも可能ですね。(^^;
>VBAの延長でUWSCを使うとした場合、あくまでメインはVBAとして、Cellの値をUWSCへパラメータで渡すとか?そういうのは可能でしょうか?
可能だと思います。UWSCとExcelの親和性は高いようです。Excelでの使い方も書かれていたと思います。
>UWSCだとダイレクトに file typeのinputに文字が入るってことでしょうか?
それは出来ます。人間の手でPC上で出来ることは、ほとんど出来ます。ただ、手前勝手で恐縮ですが、私の個人としては勉強がてら、もう少し、この辺りを、本当に、出来ないのか、どうなのかを、実際に、VBAだけで挑戦してみたいですね。最近、また、少し、こういうところを新たに勉強し始めたからです。それで、今までのコードを一週間ぐらい掛けて全面的に書き換えました。
どちらかというと、当座の間に合わせにはなるのですが、UWSC側にも、コードで書くことが可能で、AppActivate やWin32APIで、Excel の外のIEに出た時点で、Shell で、UWSCに切り替えればよいかと考えました。(今は、構想だけです)
VBAが書ける人なら、UWSCは、一時間程度で、コードの要領は覚えますから、キーボードマクロ以上の動きをさせることも可能です。なんと、一般的なWin32APIコマンドが搭載されていますから、長いコードを書く必要がありません。
しかし、単にキーボードマクロ程度だけなら、ExcelやIE のWindow の位置を決めれば(つまりWindowを最大にすれば)、そのまま、マウスの動きに合わせて定位置に対して動いていきます。コピー&ペーストも可能です。(素人っぽい方法ですが)
>IEの新規窓が勝手に開いてしまう。三流さんのページの問題もクリアしていると思っていいのでしょうか?
ページの問題というのは、何を指すかはよく分からなかったのですが、新規窓は、Shell.Application で、ヘッダ(LocationName)を取れば、IEオブジェクトが取得できますから、それで操作すればよいと思います。
'-------------------------------------------
Set objShellWindows = CreateObject("Shell.Application").Windows()
For Each w In objShellWindows
If TypeName(w) = "IWebBrowser2" Then
If w.LocationName = "XXX" Then 'ヘッダ名(左上隅のサイトの名称)
Set objIE = w
Exit For
End If
End If
Next
'IEの操作(objIE)
'-------------------------------------------
それと、ここのカテゴリでは、「三流さん」の解決法が多いようですが、IEの場合は、三流さんのところでは、もう一杯一杯ではないでしょうか?Vista+IE7以上になると、どうしても、管理者権限でレジストリをいじらざるを得ないわけです。(Hatenaの質問でもそれが出ていました。)しかし、他の別の質問者では、そういうことは出来ないといわれてしまいましたが、そうするとIEオブジェクトでの処理そのものが、もうお手上げです。
実際のプログラミングでは、あまり、IEオブジェクト(オートメーション)という方法を取らないのかもしれません。たとえば、古いものになるとWinSockやWin32API、新しいところでは、WinHTTPもあります。それが良い悪いというよりも、プログラマとしては、IEのセキュリティを必要としているわけではないし、背に腹は変えられないのだと思うのです。
今、こちらも、同じようなことを試みているもので、つい長くなってしまいました。
こんばんは、お世話になります。
窓が開く件はもう一度探して取ればよかったんですね。
忘れていました。
データ取得に関しては今まではwebbrowserでやってまし
たが最近、MSXML、MSHTMLに変えたところでした。
WinHTTPというのは知りませんでしたが、探ってみます。
とりあえず、UWSCの解説書を注文してしまいました。(笑)
VBのようなIDE環境があるんですね。びっくりしました。
好きなれそうな感じです。
No.2
- 回答日時:
こんにちは。
>INPUT type=file の時はダイレクトで入らないみたいです。
失礼しました。それは、別の問題のようです。
↓以下のサイトで、未解決問題として、Vista のセキュリティで、
http://www.ken3.org/cgi-bin/group/vba_ie.asp
「三流君VBAでIE操作」
「画像を自動でアップしたいので INPUTタグTYPE FILEにファイル名を入れたい。
これも、セキュリティを突破できてません。」
と書かれていました。こちらでは、XP+IE7ですので分かりませんでした。
IEのセキュリティを、VBAでいじってしまう方法などいくつかあるかと思います。
http://support.microsoft.com/kb/884429/ja
Internet Explorer の Web コンテンツのゾーンでセキュリティレベルを設定する方法
私は、VBAで、Webスクレイブはしますが、ついにIEオートメーションはURLをオープンするときだけで、それ以外はやめることにしました。IEオートメーションは、ともとも、アドオンが多すぎて問題が発生するからです。
SendKeys ではうまく行かないのは想像はつくのですが、たとえば、VBAから、UWSCを使ってキーボードマクロで入れる方法もあるかと思います。
この回答への補足
UWSCを入れてみました。
これだとVBAなしで単独で作業ができるように思いましたが。
VBAの延長でUWSCを使うとした場合、あくまでメインはVBA
として、Cellの値をUWSCへパラメータで渡すとか?そうい
うのは可能でしょうか?
また、IEの新規窓が勝手に開いてしまう。三流さんのページ
の問題もクリアしていると思っていいのでしょうか?
ありがとうございます。
http://www.ken3.org/cgi-bin/group/vba_ie.asp
で、IE7の問題はクリアできたのですが、三流さんの
Form内にIEを配置する方法だとsendkeysで指定場所
に値が入らないんです。
UWSCだとダイレクトに file typeのinputに文字が入る
ってことでしょうか?一度、見せていただきます。
No.1
- 回答日時:
こんにちは。
リンク先の回答では、確実にポジションが取れていないので、不安定になってしまいます。
Set objIE = CreateObject("InternetExplorer.Application")
で、アクセスしたら、
ソースから、InputBox のIDの xxx を探して、そこに代入すればよいです。
例
「<input name="IMT" type="text" value="" class="textArea" id="xxx" size="45" maxlength="45">」
objIE.Document.getElementById("xxx").Value = ActiveSheet.Cells(1, 1).Value
のようにすればよいです。
この回答への補足
ご回答ありがとうございます。
通常、そのコードでいけると思うのですが、 INPUT type=file の
時はダイレクトで入らないみたいです。
それで参照ページではsendkeysを使っているのだと思います。
理想はダイレクトなんですが、どちらでもいいので確実に入れられ
ないか考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
ちょっと先の未来クイズ第4問
11月ごろに発表される、2024年の「新語・流行語大賞」にノミネートされる言葉を書けるだけ書いてください。
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
EXCEL VBA でIEを制御して、INPUT type=file で出るダイアログに入力できませんか?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
実行時エラー 3265「要求された...
-
「Columns("A:C")」の列文字を...
-
VBAで既に開いている別アプリケ...
-
EXCEL VBA オートシェイプナン...
-
エクセルのVBAの標準モジュール...
-
VBAで作成するメール(開封確認...
-
ExcelでAccessのテーブルにADO...
-
ExcelVBAでのNZ関数について
-
ExcelのVBAについて(グラフ操作)
-
Excel VBAでWordの複数ファイル...
-
Excelでフィルタをかけると警告...
-
エクセルマクロエラー「'Cells'...
-
ドロップダウンリストの行を増...
-
UserForm1.Showでエラーになり...
-
ASPでExcelファイルを開く場合
-
WordにOLEで埋め込んだExcelでW...
-
上下の位置揃えについて
-
VBAによるコメントの余白設定
-
オブジェクト指向の「object」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
Excelでフィルタをかけると警告...
-
オブジェクトが見つかりません
-
EXCEL VBA オートシェイプナン...
-
VBAからPDFファイルにパスワー...
-
エクセルマクロエラー「'Cells'...
-
ある文字列が全て数字であるか...
-
VBAで Set wb = Sheets(1).Cop...
-
AccessVBAで「dim dbs as datab...
-
上下の位置揃えについて
-
Excel VBA Collection.add で R...
-
UserForm1.Showでエラーになり...
-
VBScriptでファイルの日時順(降...
-
テキストボックス中の文字列の...
-
ExcelVBAでのNZ関数について
-
PowerPointVBAでスライドマスタ...
おすすめ情報