• 締切済み

VBAでフォルダの選択時のパスを指定するには?

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

みんなの回答

  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.1

たぶんこちらは不要ですよね。 そのままにしないで。

believe_me
質問者

補足

質問を投稿したらエラーになり、もう一度投稿ボタンを押したら二重投稿になってしましました。 まだ削除できる時期になってないので削除できません。 回答はどちらでも構いません。

関連するQ&A

  • エクセルVBA、フォルダ選択時のパスを指定するには?

    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

  • VBAでのフォルダ指定方法について

    EXCELファイルが保存されているディレクトリ配下のフォルダーを指定できるようにしたくていろいろ試してみたのですが、うまくいきません。 どなたか、お知恵をお貸しください。 以下ソースです。 Private Sub CommandButton1_Click() Dim ShellApp As Object Dim oFolder As Object Dim MyPath As String MyPath = ActiveWorkbook.Path Set ShellApp = CreateObject("Shell.Application") Set oFolder = ShellApp.BrowseForFolder(0, "処理ファイルの格納フォルダ選択", 1, MyPath) If Not oFolder Is Nothing Then TextBox1.Value = oFolder.Items.Item.Path End If Set ShellApp = Nothing Set oFolder = Nothing End Sub

  • 【Excel VBA】選択フォルダへの相対パス

    色々なサイトを参考に、Excel VBAにて以下の様なロジックを作りました。 -------------- Dim SHELL, MYPATH Dim TARGETDIR As String Set SHELL = CreateObject("Shell.Application") Set MYPATH = SHELL.BrowseForFolder(&O0, "フォルダを選んでください", &H1 + &H10, ThisWorkbook.Path) If MYPATH Is Nothing Then End TARGETDIR = MYPATH.items.Item.Path Set SHELL = Nothing Set MYPATH = Nothing -------------- ブックのあるパス配下のフォルダを選択して、フルパスを"TARGETDIR"に格納します。 質問は2つです。 (1)"~.items.Item.Path"の構文の意味を教えて下さい。 (2)フルパスではなく"ブックのあるパスから見た、選択したフォルダへの相対パス"を知る方法を教えて下さい。 よろしくお願いします。

  • ダイレクトに目的のフォルダを指定する方法は?

    全てのフォルダをループするのではなく、 ダイレクトに目的のフォルダを指定する方法はありますか? アクセスからアウトルックの該当のフォルダの中身を取得したいのですが 下記コードで目的通り取得できるのですが コードが遠回りの気がします。 ダイレクトにフォルダを指定する方法があれば教えてください。 Sub test() Dim myNaSp As Namespace Dim myFolder As MAPIFolder Dim mySecFolder As MAPIFolder Dim myThrFolder As MAPIFolder Dim FolderName As String Dim myItem As MailItem Dim myindex As Long Set cn = CurrentProject.Connection Set myNaSp = GetNamespace("MAPI") For Each myFolder In myNaSp.GetDefaultFolder(olFolderInbox).Folders For myindex = 1 To myFolder.Items.Count Set myItem = myFolder.Items(myindex) If myFolder.Name = "testフォルダ" Then Debug.Print myItem.Body End If Next Next Set myNaSp = Nothing Set myFolder = Nothing End Sub

  • フォルダ選択と取得したパスの表示

    どうしてもわからないのでご教授お願いします。 コマンドボタンを使用して、フォルダの選択のダイアログを表示し、選択したフォルダのパスを取得することはできたのですが、そこから取得したパスを任意のセルに表示させたいです。 どうすれば表示させることができるでしょうか。 Private Sub commandbutton1_Click() Dim Shell, myPath Set Shell = CreateObject("Shell.Application") Set myPath = Shell.BrowseForFolder(&O0, "フォルダを選んでください", &H1 + &H10, "C:\") If Not myPath Is Nothing Then MsgBox myPath.Items.Item.Path Set Shell = Nothing Set myPath = Nothing End Sub ご教授宜しくお願いします。

  • VBA 一つのフォルダの中のフォルダ名とファイル名

    一つのフォルダの中のフォルダ名とファイル名を取得したい場合は ************************************** Sub test() Dim MyFileName As String Dim MyFolderName As String Dim myFSO As Object Dim MyFolder As Scripting.Folder MyFolderName = "C:\" 'フォルダを取得 MyFileName = Dir(MyFolderName & "*.*") Do While MyFileName <> "" Debug.Print MyFileName MyFileName = Dir() Loop 'ファイルを取得 Set myFSO = CreateObject("Scripting.FileSystemObject") With myFSO With .GetFolder(MyFolderName) For Each MyFolder In .SubFolders Debug.Print MyFolder.Name Next End With End With Set myFSO = Nothing End Sub ************************************** の様に ファイル名・フォルダ名をそれぞれループして取得しないとダメでしょうか? もうちょっとスマートなコードはありますか?

  • エクセルVBAで指定フォルダ内の選択ファイル名の取得

    お世話になります。 エクセルVBA昨日から始めた初心者です。 いま、 Private Sub CommandButton1_Click() Dim Shell, myPath Set Shell = CreateObject("Shell.Application") Set myPath = Shell.BrowseForFolder(&O0, "フォルダを選んでください", &H1 + &H10, "\\hk001a24\va\data\ツール") If Not myPath Is Nothing Then MsgBox myPath.Items.Item.Path Set Shell = Nothing Set myPath = Nothing End Sub というの作成したのですが、 これだとフォルダの選択しか出来ませんでした。 \\hk001a24\va\data\ツールの下にあるファイルを選択出来て、その選択したファイル名をVBA取得して保持できる ようにしたいのですが・・・ 急いでいるのでここで質問させて頂きました。 よろしくお願いします。

  • VBAで全ての受信トレイの数ではなく受信メールの数

    VBAで全ての受信トレイの数ではなく受信メールの数を取得する方法は? Sub めーる数() Dim myNaSp As NameSpace Dim myFolder As MAPIFolder Set myNaSp = GetNamespace("MAPI") Set myFolder = myNaSp.GetDefaultFolder(olFolderInbox) Debug.Print myFolder.Items.Count Set myNaSp = Nothing Set myFolder = Nothing End Sub このコードだと、「受信トレイ」のメールの数しか取得できません。 フォルダは画像のように、サブフォルダがあります。 この場合、全ての受信メール(受信トレイ+サブフォルダ)の数を取得するにはどうすればいいでしょう?

  • エクセル VBA フォルダを閉じる

    いつもお世話になっております。 下記のプロシージャでフォルダを開いているのですが、このフォルダを閉じる場合はどのように記述すればよろしいのでしょうか? よろしくお願いいたします。 Sub opn_fld() Dim myFol As String, mymsg As Integer Dim IE As Object myFol = "C:\ABC\" Shell "C:\Windows\Explorer.exe " & myFol, vbNormalFocus End Sub

  • 実行時エラー 76 パスが見つかりません。

    VBAのFileSystemObjectでフォルダをコピーしているのですが フォルダ1は問題なくコピーできるのですが 毎回フォルダ2だけは、 実行時エラー 76 パスが見つかりません。 と言うエラーになってしまいます。 Sub Sample() Dim myFSO As Object Dim MyPath As String MyPath = "C:\" Set myFSO = CreateObject("Scripting.FileSystemObject") myFSO.CopyFolder MyPath & "フォルダ2", MyPath & "新フォルダ2" Set myFSO = Nothing End Sub このようなコードなのですが、フォルダ1もフォルダ2も同じコードを使っています。 フォルダ2に関しては容量が10GBくらいありますが、フォルダが重すぎるのが原因でしょうか?

専門家に質問してみよう