アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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以上なら大丈夫です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
2番目の方法が一番いいみたいですね。
自宅のExcel2003で試して大丈夫でした。
職場は記憶媒体持込禁止なので、頑張ってタイピングしたいと思います。
ありがとうございました。

お礼日時:2007/11/23 01:00

既に解決済みのようですが。



> 特定のフォルダ以下を選択する場合はこのやり方で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 …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
主に使う職場のエクセルはExcel2000です。
FolderPickerが使えないのが残念です。

お礼日時:2007/11/23 01:02

こんばんは。



以下のように換えればよいのではありませんか?
Const STARTFOLDER As String ="任意のフォルダ"

Set myFolder = mySh.BrowseForFolder(0, msg, &H0, STARTFOLDER)
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
実行しました。上手く行きましたありがとうございます。
このような手法はどこかWebに載っているのでしょうか?
また参考書などがあるのでしょうか?
もしご存知でしたら教えていただけないでしょうか?
よろしくお願い申し上げます。

それと参考までに教えてください。
特定のフォルダ以下を選択する場合はこのやり方でOKだと思いますが、上位のフォルダ及びその配下のフォルダを選択させたい場合もある時などはどのような方法がありますでしょうか?
よろしくお願い申し上げます。

お礼日時:2007/11/17 19:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!