- PR -

VBA:IEのファイルダウンロードダイアログ制御

1
投稿者投稿内容
ぷりん
会議室デビュー日: 2009/02/12
投稿数: 4
投稿日時: 2009-02-12 19:38
IEから表示されたファイルダウンロードダイアログ(名前を付けて保存)の
保存ファイル名をVBAで変更しようとしていますが、コンボボックスのウィンドウハンドル取得で失敗します。
有識者の方!教えていただけないでしょうか。
この方法(ComboBox32、ComboBox、Editで段階的に取得する)以外に
もっと良い方法があればご教授ください。

このファイルダウンロードダイアログは,
VBAで、IE起動→Webページ移動→ダウンロードボタンクリックを
実行して表示させてます。


1.GetWindowText(hDlg, winText, Len(winText))
2.hEntry = FindWindowEx(hDlg, 0&, "ComboBox32", vbNullString)
3.hEntry = FindWindowEx(hEntry, 0&, "ComboBox", vbNullString)
4.hEntry = FindWindowEx(hEntry, 0&, "Edit", vbNullString)
5.Do
SetForegroundWindow hDlg
sleep 100
SetForegroundWindow hEntry
sleep 100
lRet = SendMessage(hEntry, WM_SETTEXT, 0&, "d:\abc.txt")

If lRet = 0 Then
Exit Do
End If
Loop

【上記の補足】
1. の実行結果OK
 →winTextには、"名前を付けて保存"が取得できた
hDlgは正しい値でした
2.の実行結果NG
 →hEntry=0となる
3.の実行結果NG(2でhEntry=0の為)
4.の実行結果NG(2でhEntry=0の為)
5.2〜4で取得した保存ファイル名欄に対して
 保存ファイル名を設定しようとしています

【実行環境】
Windows Vista
IE 7
デューン
大ベテラン
会議室デビュー日: 2004/04/21
投稿数: 174
お住まい・勤務地: Tokyo
投稿日時: 2009-02-13 15:46
Spy++で見た感じ、ファイル名の部分は
コード:
ダイアログ
 ComboBoxEx32
  ComboBox
   Edit


という親子関係のようですが、ComboBoxEx32で試すとどうなりますか?

ぷりん
会議室デビュー日: 2009/02/12
投稿数: 4
投稿日時: 2009-02-13 17:22
返信ありがとうございます。

ComboBoxEx32でもNGでした。
Azulean
大ベテラン
会議室デビュー日: 2008/01/04
投稿数: 123
お住まい・勤務地: 大阪府
投稿日時: 2009-02-14 00:08
IEとかOSのバージョンによって、ウィンドウ内の構成変わっちゃうかもよ。

そもそも、Vista + IEは保護モードとかの関連もあって、権限分離されてるから、その関係だったりしない?
(他のウィンドウからの操作を受け付けないようにシャットアウトしているとか)
未記入
会議室デビュー日: 2009/03/01
投稿数: 1
投稿日時: 2009-03-01 15:55
参加させていただきます。
私も同じような事で悩んでます。
参考になるかわかりませんが、

GetForegroundWindowにてハンドルを取得する必要があるのではないでしょうか。

参考:
http://nienie.com/~masapico/api_GetWindowText.html
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t02.htm
1

スキルアップ/キャリアアップ(JOB@IT)