VBAでフォルダを選択する時に以下のマクロを使用しています。
これを実行するとデスクトップから表示されますが、任意のフォルダから表示させることはできないでしょうか?
用途としてはある特定のフォルダ配下に複数のフォルダがあり、これを選択させたいのです。
デスクトップからですと、そのフォルダまで辿り着くのが大変です。
また誤ったフォルダを選択する危険もあります。
このShell32を使うことにこだわってはいません。
他に良い方法があれば、それでも構いません。
よろしくお願い申し上げます。
Sub Macro1()
MsgBox Folder_Define("フォルダを選択してください")
End Sub
Function Folder_Define(msg As String) As String
Dim mySh As Shell32.Shell
Dim myFolder As Shell32.Folder
Set mySh = CreateObject("Shell.Application")
Set myFolder = mySh.BrowseForFolder(0, msg, 0)
If myFolder Is Nothing Then
Folder_Define = ""
Else
Folder_Define = myFolder.Items.Item.Path
End If
Set myFolder = Nothing
Set mySh = Nothing
End Function
No.3ベストアンサー
- 回答日時:
こんばんは。
#1です。
>このような手法はどこかWebに載っているのでしょうか?
本当は、MSDNといいたかったけれども、見当たらなかったです。
以前は、そちらで収録したつもりだったのですが……。
私が、他で参考にしていたところは、以下のサイトです。
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
書籍もほしいと思いましたが、最近、半分以上は、もう少し上の段階の技術が混じってきて、敷居が高いです。
>上位のフォルダ及びその配下のフォルダを選択させたい場合
今、試してみましたが、このAPI関数で、出来ますね。
http://www.alato.ne.jp/kazu-/vb/tip06.htm
今回のような場合は、hwnd を、0 にしてかまわないと思います。
一応、Excel2000以上なら大丈夫です。
回答ありがとうございます。
2番目の方法が一番いいみたいですね。
自宅のExcel2003で試して大丈夫でした。
職場は記憶媒体持込禁止なので、頑張ってタイピングしたいと思います。
ありがとうございました。
No.2
- 回答日時:
既に解決済みのようですが。
。> 特定のフォルダ以下を選択する場合はこのやり方でOKだと思いますが、
> 上位のフォルダ及び...
CreateObject("Shell.Application") の BrowseForFolder では無理です。
SHBrowseForFolder API でフォルダ選択ダイアログを呼び出すか、
簡単に済ますなら Excel2002 以降限定になりますけど FileDialog
で FolderPicker を使うとか。
参考URL:
http://officetanaka.net/excel/vba/tips/tips39.htm
http://www.asahi-net.or.jp/~ef2o-inue/download/s …
No.1
- 回答日時:
こんばんは。
以下のように換えればよいのではありませんか?
Const STARTFOLDER As String ="任意のフォルダ"
Set myFolder = mySh.BrowseForFolder(0, msg, &H0, STARTFOLDER)
回答ありがとうございます。
実行しました。上手く行きましたありがとうございます。
このような手法はどこかWebに載っているのでしょうか?
また参考書などがあるのでしょうか?
もしご存知でしたら教えていただけないでしょうか?
よろしくお願い申し上げます。
それと参考までに教えてください。
特定のフォルダ以下を選択する場合はこのやり方でOKだと思いますが、上位のフォルダ及びその配下のフォルダを選択させたい場合もある時などはどのような方法がありますでしょうか?
よろしくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 16:59
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C:\\Documents and Settingsが...
-
大量のフォルダへのハイパーリ...
-
お気に入りフォルダの名前はど...
-
フォルダのサムネイル画像
-
I386フォルダの役目とは
-
excel VBA 部分一致の名前をパ...
-
フォルダについて。
-
コマンドプロンプトの使い方
-
【マクロ】フォルダを3つ、PO...
-
元のフォルダに矢印キーで帰りたい
-
excel VBA 特定の文字列を含む...
-
エクセルVBA、フォルダ選択時の...
-
深い階層かつパスが破損したフ...
-
検索でフォルダのみを検索する...
-
エクスプローラ、「上へ」でフ...
-
【マクロ】フォルダを2つのモ...
-
エクスプローラの表示形式をサ...
-
Tera Termでのコマンド流し込み...
-
Thunderbird 振り分けされなく...
-
エクセルで定期的(30分おき)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダのサムネイル画像
-
C:\\Documents and Settingsが...
-
元のフォルダに矢印キーで帰りたい
-
大量のフォルダへのハイパーリ...
-
フォルダについて。
-
excel VBA 部分一致の名前をパ...
-
撮影後、SDカードに作成される...
-
excel VBA 特定の文字列を含む...
-
【マクロ】フォルダを2つのモ...
-
I386フォルダの役目とは
-
お気に入りに追加したのに表示...
-
お気に入りフォルダの名前はど...
-
バッチファイルの親フォルダを...
-
エクセルVBAで相対パスでフォル...
-
謎のフォルダ「ドネュメント」
-
AccessVBAで特定の文字を含むフ...
-
iPhoneでフォルダに分けして整...
-
【マクロ】フォルダを3つ、PO...
-
ファイル検索結果をフォルダパ...
-
写真や動画を保存する、これら...
おすすめ情報