
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA、フォルダ選択時の...
-
バッチファイルの親フォルダを...
-
撮影後、SDカードに作成される...
-
お気に入りフォルダの名前はど...
-
フォルダのサムネイル画像
-
OUTLOOK連絡先をグループ分けす...
-
ファイル検索結果をフォルダパ...
-
excel VBA 部分一致の名前をパ...
-
C:\\Windows\\System32はどこ?
-
特定のフォルダのみファイルの...
-
元のフォルダに矢印キーで帰りたい
-
検索でフォルダのみを検索する...
-
NetBTエラーとbrowserエラーが多発
-
Tera Termでのコマンド流し込み...
-
Thunderbird 振り分けされなく...
-
java auto updaterとは何でしょ...
-
コマンドの戻り値が「130」
-
2010でShiftキーを使っても自動...
-
エクセルで定期的(30分おき)...
-
WindowsServer2003の、SMB1.0を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダのサムネイル画像
-
撮影後、SDカードに作成される...
-
大量のフォルダへのハイパーリ...
-
フォルダについて。
-
お気に入りフォルダの名前はど...
-
excel VBA 特定の文字列を含む...
-
excel VBA 部分一致の名前をパ...
-
C:\\Documents and Settingsが...
-
元のフォルダに矢印キーで帰りたい
-
エクスプローラ、「上へ」でフ...
-
ディレクトリ数のみを取得する...
-
お気に入りに追加したのに表示...
-
PCで、FF11のマクロデータを移...
-
AccessVBAで特定の文字を含むフ...
-
Microsoft Security Essentials...
-
ツリーのアニメーションについて
-
コマンドプロンプトの使い方
-
フォルダを開くと、検索画面が...
-
ファイルサーバーのアクセス許可
-
I386フォルダの役目とは
おすすめ情報