
vbscriptで、ファイル選択ダイアログを表示する方法を確認してます。
あるボタンを押すと、ダイアログを表示するようにしようとしてますが、
以下の場合、元の画面(ボタンを押す画面)の後方にダイアログが表示されます。
ダイアログを前面に表示する事は可能でしょうか。
ーーーーーーーーーーーーー
Dim iptObj
Dim ret
With CreateObject("InternetExplorer.Application")
.Visible = False
.FullScreen = True
.Navigate "about:blank"
'表示待ち
While .Busy Or .readyState <> 4
WScript.Sleep 100
Wend
Set iptObj = .document.createElement("input")
iptObj.setAttribute "type", "file"
.document.body.appendChild iptObj
iptObj.Click
If Trim(Len(iptObj.Value)) > 0 Then
iptObj.Focus
.ExecWB 17, 0 'OLECMDID_SELECTALL
.ExecWB 12, 0 'OLECMDID_COPY
ret = CreateObject("htmlfile").parentWindow.clipboardData.GetData("text")
End If
Set iptObj = Nothing
.Quit
End With
GetFilePathIE2 = ret
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
WScript をわざわざ使う方にとって、私が紹介する方法は、あまり良い案とは言えませんが、Excel等の環境がない人にとっては、一案だと思います。
それは、DynamicWrapperを使う方法です。後は、前面にだすのがうまくいくかは、Win32API のコードの問題ですから、うまくいかなければ、方法を変えるだけです。
入手先
http://glsft.free.fr/index.php?option=content&ta …
使用準備
https://www.recfor.net/jeans/index.php?itemid=23
regsvr32 で、DynaWrap.dll を登録してあげます。
//
With CreateObject("InternetExplorer.Application")
.Visible = False
.FullScreen = True
.Navigate "about:blank"
'表示待ち
While .Busy Or .readyState <> 4
WScript.Sleep 100
Wend
'//ここから
Dim objDynaWrap
Dim hWnd
Dim CC
Set objDynaWrap = CreateObject("DynamicWrapper")
objDynaWrap.Register "USER32.DLL", "FindWindow", "i=sl", "f=s", "r=h"
objDynaWrap.Register "USER32.DLL", "SetForegroundWindow","i=l"
hWnd = objDynaWrap.FindWindow("#32770", 0)
If hWnd =0 Then
MsgBox "Failure!"
WScript.Quit
End If
Call objDynaWrap.SetForegroundWindow(hWnd)
'//ここまで。後は既存の通り
No.1
- 回答日時:
こんにちは
VBSは触ったことがないので、まったくわからないのですが…
事象だけから推測すると、IEのウィンドウをアクティブ(最前面)にしておけば良さそうに思えます。
https://netwiz.jp/?p=513
ダイアログを出す方法を検索してみると、他にも
・BrowseForFolder を利用する方法
・CommonDialog を利用する方法
などがあるようですが、アプリケーション経由で行う方法としてはIE利用の例が多いみたいですね。
愚考してみるに、IE利用だとReady待ちや要素生成などの余分な処理が多い気がしましたので、Exelなどを利用した方が簡単なのではないかと、少し試してみました。
以下を単独で実行してみる限りでは、私の環境ではダイアログは最前面に表示されますが、ご提示の内容を IE → Excel にほぼ置き換えただけなので、質問者様の環境では後ろに表示されるのかも知れません。
試してはいませんが、最前面に表示する処理を追加してあげれば、前面に表示されるようにならないでしょうか?
Dim fName
With CreateObject("Excel.Application")
.Visible = False
fName = .GetOpenFilename("All Files (*.*),*.*")
.Quit
End With
MsgBox fName
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAにてメッセージボックスを最前面に表示させる
その他(プログラミング・Web制作)
-
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
VBSで起動したアプリが前面表示しない
Visual Basic(VBA)
-
-
4
ファイル保存先のダイアログが背面に表示されてしまう
Java
-
5
vbsで選択ダイアログを表示したいのですがやり方が分かりません。教えて
その他(プログラミング・Web制作)
-
6
VBA ファイルを開くダイアログでの初期表示にファイルサーバーを指定
Excel(エクセル)
-
7
Application.Runエラー(1004)
Excel(エクセル)
-
8
inputboxのウインドウを画面の最上部に表示したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンの表示の色、フォントを...
-
ダイアログの上のテキストボッ...
-
ボタンの配置を変更したい
-
リソースファイルとは・・・
-
vbscriptで、ファイル選択ダイ...
-
フォーム上のリストボックスに...
-
C# ボタンコントロール内で文字...
-
'int' から 'LPCSTR' に変換で...
-
エクセルで作った新しいウイン...
-
コントロールの書式設定で、“コ...
-
グラフの交点の求め方(Excel)
-
コンボボックス内の文字サイズ変更
-
「アイテムは収集されました」...
-
Minecraft 統合版(PC)の描画距...
-
VBAのフォント変更(エクセルか...
-
VBA .Value=.Value ?
-
エクセルである行が急に消えて...
-
マウスホイールをフックしたい
-
ラジオボタンの初期指定
-
DateTimePickerでに年月までし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ボタンの表示の色、フォントを...
-
C# ボタンコントロール内で文字...
-
メッセージボックスを大きくす...
-
フォーム上のリストボックスに...
-
リソースファイルとは・・・
-
ダイアログの上のテキストボッ...
-
MFCダイアログボックスを最前面...
-
メッセージボックスのボタン文...
-
コンボボックスのドロップダウ...
-
ボタンの配置を変更したい
-
ダイアログボックスで指定した...
-
'int' から 'LPCSTR' に変換で...
-
ダイアログのボタンが押された...
-
ダイアログ最前面表示時の後ろ...
-
ダイアログの表示位置の保存
-
confirmダイアログの表示文字に...
-
ダイアログ間のメッセージの送...
-
エディットコントロールの色の...
-
MFC ポップアップメニューのチ...
-
vbscriptで、ファイル選択ダイ...
おすすめ情報
どうもありがとうございます。
Excelの方式も行いましたが、
やはり後ろに表示されてしまいます。
環境の問題でしょうか。
前面にするのがやはりうまくいってません。