• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:msoFileDialogFolderPicker)

VBAでフォルダを選択するダイアログを開く方法

このQ&Aのポイント
  • オフィス2003を使っている場合、VBAでフォルダを選択するダイアログを開く方法を教えてください。
  • Excelの標準モジュールに以下のコードを貼り付けると、フォルダを選択するダイアログが開きますが、Accessではエラーが発生します。
  • Accessでも同様のダイアログを使用するためには、どのような修正が必要ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

VBE のツール → 参照設定 で Microsoft Office 11.0 Object Library にチェックは入っていますか?

LGBU65797
質問者

お礼

Microsoft Office 11.0 Object Libraryにチェックが必要なのですね、 確認してみます。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBA SelectedItems

    Excel2003のVBAで   With .FileDialog(msoFileDialogFolderPicker)      .AllowMultiSelect = True '複数選べる     If .Show =true Then       for each eachFiles in .SelectedItems(1)'←ここ         (いろいろ処理)       next eachFiles     End If   End With    という処理はよく使うと思います。ここで、 Dim tmp As variant と宣言しておいて tmp=.SelectedItems と格納しようとすると、引数は省略できないとエラーになるのですが、考え方のどこが間違っているのでしょうか? .SelectedItemsって配列だから、このやり方で格納できると考えたのですが、何がダメなのでしょうか? 原因が分かったとして、格納だけは兎に角したいのですが、どうすればいいでしょうか。 格納して、with文に縛られた状態から早く脱したいです。

  • (VBA)フォルダー内のファイルを自動で読み込む

    以下でターゲットフォルダーを指定して その中に存在する、テキストファイル(.txt)とMP3ファイル(.mp3)を 各1個ずつをそれぞれ読み込むようにしています。 'フォルダーを一覧から選択 (自由に選べること) MsgBox "ターゲットフォルダーを選択してください。", vbOKOnly + vbQuestion, "Making" With Application.FileDialog(msoFileDialogFolderPicker) With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合 TurgetFolder = .SelectedItems(1) Else TurgetFolder = .SelectedItems(1) & "\" End If End If End With 'TEXTファイル選択(ダイアログ) MsgBox "ターゲットになる" & vbCrLf & "テキストファイルを選択してください。", vbOKOnly + vbQuestion, "LIST" ChDir TurgetFolder TurgetTEXT = Application.GetOpenFilename("TEXTファイル(*.txt),*.txt") If VarType(TurgetTEXT) = vbBoolean Then MsgBox "選択がキャンセルされました" Else 'MsgBox TurgetFile & " が選択されました" End If 'Mp3サイズ読み込み() MsgBox "ターゲットMP3を選択してください。", vbOKOnly + vbQuestion, "MP3" TargetMP3 = Application.GetOpenFilename("MP3ファイル,*.mp3") 'MsgBox TargetMP3 Set fso = CreateObject("Scripting.FileSystemObject") Set SHell = CreateObject("Shell.Application") Set Folder = SHell.Namespace(fso.GetFile(TargetMP3).ParentFolder.Path) Target = fso.GetFile(TargetMP3).Name ----------------------------------------------- 今回、間違いが無くなるように フォルダー構造をターゲットフォルダーの中に テキスト及びMP3ファイルが一つずつしかない無い構造にしたので それぞれ別々に指定する必要なく ターゲットフォルダーを指定するとその中に存在する テキスト及びMP3ファイルを自動で指定(読み込む)ように改造したいのですが どのように改造すれば良いでしょうか ?

  • 変数を保持して呼び出す方法

    変数を保持する方法 2022/02/10 15:36 変数が受け継がれない 2022/02/10 15:24 sub A(),subB()と複数のプロシージャをModule1に配置。 Sub Aでターゲットファイル(T_File)を指定して Sub Bで同じT_Fileを呼び出そうとしたのですが Subの前に配列は宣言しているのでPrivateのハズなのに 変数が受け継がれません T_Fileが”””となります。 多分、Sub A()が終了した時点で一度マクロが終了して 新たにSub B()を呼び出すので上手く変数が受け継がれないのだと思います。 何処かのシートのセルに変数を保持して呼び出す方法が考えられますが そのほかに変数を保持する方法は有りませんか? (できればシートのセルに保持しない方法があれば教えて下さい。) 以下コード(コードが長いので必要と思われる所だけを記載しています。) ’------------------------------------ Option Explicit Dim dlg As FileDialog Dim T_File As String Sub A() Set dlg = Application.FileDialog(msoFileDialogFilePicker) If dlg.Show = False Then MsgBox "処理はキャンセルされました。" Exit Sub Else End If '指定テキストファイル読み込み T_File = dlg.SelectedItems(1) '(途中のコード省略) If rc = vbNo Then MsgBox "処理を中止します。", vbCritical Exit Sub Else MsgBox "処理が終了しました。", vbInformation End If End Sub Sub B() ’T_File = dlg.SelectedItems(1) Folder_Name = CreateObject("Scripting.FileSystemObject").GetParentFolderName(T_File) End Sub

  • フォルダー名に特殊文字?が存在する場合にエラー発生

    以下のコードでフォルダー名を取得しています。 しかし、フォルダー名に特殊文字?が存在する場合に下記でエラーが発生します。  例えば「Oxygène」 でeの上に’があるなど   If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then      実行エラー 53: ファイルが見つかりません。 これは、excelの仕様で処理できないのでしょうか ? 他のコードで処理できれば教えて下さい。 --------------------------------------- Sub フォルダ名取得() Dim MyName Dim MyPath Dim i As Long ’仮の消込(初期化: 前回の記入文をクリアー) Range("A5:H50").Clear i = 1 ' フォルダーを自由に選べること。 参考:officeTANAKA With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then ' MsgBox .SelectedItems(1) If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合 MyPath = .SelectedItems(1) Else MyPath = .SelectedItems(1) & "\" End If End If End With If MyPath = Empty Then MsgBox "フォルダー名表示をキャンセルしました。": Exit Sub 'Range("b2:c2").ShrinkToFit = True ' 縮小してセル内に表示 MyName = Dir(MyPath, vbDirectory) ' 最初のフォルダ名を返します。 '親フォルダー Range("A2") = MyPath Do While MyName <> "" ' ループを開始します。 ' 現在のフォルダと親フォルダは無視します。 If MyName <> "." And MyName <> ".." Then ' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。 If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then Range("a" & i + 4) = MyPath & MyName ' アクティブシートA5セルから下方にフルパス表示。 Range("b" & i + 4) = MyName ' アクティブシートB5セルから下方にフォルダ名表示 i = i + 1 End If End If MyName = Dir ' 次のフォルダ名を返します。 Loop MsgBox MyPath & "の中にフォルダーは" & (i - 1) & "個のフォルダーがありました。" End Sub

  • アクセス フォームのテキストボックス内の文字列

    お世話になります。 アクセス使い始めて1ヶ月ぐらいの初心者です。 アクセスのフォーム1に、ファイル参照ボタンを作って フォーム1にテキストボックスも作り、参照ボタンで選んだ path?をテキストボックスに入るようにしました。 次にそのテキストボックスに入ったpathを利用して、外部からテキストファイルを インポートしたいのですが、 インポートボタンを作って、ボタンを押したらテキストボックスに参照して入ってるpathを 取得してインポートできるようにしたいのですが、、、 知恵をお貸しいただけたら嬉しいです。 今作ったのは Private Sub コマンド44_Click() Dim objFileDialog As Object 'FileDialog Dim stTitle As String 'タイトル Dim stPath As String 'ファイルパス Dim stInitialFileName As String '初期ファイルパス If Me.chk.Value = -1 Then stTitle = "ファイル参照" '★ stInitialFileName = "C:\Test\" '★ Set objFileDialog = _ Application.FileDialog(msoFileDialogFilePicker) Else Const msoFileDialogFolderPicker = 4 'フォルダの参照 stTitle = "フォルダ参照" '★ stInitialFileName = "C:\Test\" '★ Set objFileDialog = _ Application.FileDialog(msoFileDialogFolderPicker) End If With objFileDialog 'ダイアログボックスのタイトル .Title = stTitle '初期フォルダパス .InitialFileName = stInitialFileName If .Show = False Then 'キャンセル時 GoTo Exit_SUB Else '★選択時フォルダパス表示 stPath = .SelectedItems(1) Me.テキスト45.Value = stPath End If End With Exit_SUB: Set objFileDialog = Nothing End Sub とゆう感じでテキストボックス45に入ったpathを利用してインポートしたいのです、 文章が読みにくくて申し訳ないです、 よろしくおねがいします。

  • エクセルVBA:取得したファイル情報を別シートに貼るには・・・

    いつもお世話になっています。 今エクセルVBAで指定したフォルダ内のファイル情報を取得し、sheet2に貼り付けるものを作っています。 指定したフォルダ内のファイル情報を取得するまでは分かったのですが、作ったVBAを実行するとsheet1のA2セルから自動的に貼り付けられてしまいます。 sheet2のA1セルから貼り付けるにはどうすれば良いのでしょうか?? 作ったVBAはこんな感じです。 まず、フォルダのパスを取得しA2セルへ表示します。 Sub test2()  With Application.FileDialog(msoFileDialogFolderPicker) If .Show = 0 Then Exit Sub Range("A2").Value = .SelectedItems(1) End With End Sub 次に、A2セルの値を使ってファイル名を取得しました。 Sub Test() Dim i As Long Dim pass As String pass = Range("A2").Value With Application.FileSearch .NewSearch .LookIn = pass .FileType = msoFileTypeAllFiles .SearchSubFolders = True If .Execute() > 0 Then For i = 1 To .FoundFiles.Count Cells(i + 1, 1) = .FoundFiles(i) Cells(i + 1, 3) = FileDateTime(.FoundFiles(i)) Next i End If End With End Sub です。 長くて申し訳ありません。よろしくお願いします。

  • VBAでユーザーフォーム上に参照したファイルを開きたいのですが…

    EXCEL2003 SP3での質問です。 ユーザーフォームをVBAで作成中です。 主な機能は、対象月をコンボBOXで選択させた上で、 データ元とインプット先のファイルをテキストBOXに参照し、 実行ボタンクリックでデータ元からインプット先の該当月シートに データをコピーするといった感じです。 (データ元の該当シート内データを全てコピー&ペースト) 取り込み以降の処理はVBAを使用せずに作成しようと考えています。 質問は、取込みたいファイルの参照後の「ファイルを開いてデータをコピーする」処理がうまくいかず、 どのようにしたらよいか教えて頂けますでしょうか。 現在、以下のように記述していますが、 CommandButton3_Click()の部分の処理が分からずファイルが開けません。ご教授ください。 Private Sub CommandButton1_Click() With Application.FileDialog(msoFileDialogFilePicker) .Filters.Clear .Filters.Add "テキスト", "*.csv;*.txt", 1 If .Show = 0 Then Exit Sub Me.TextBox1.Text = .SelectedItems(1) End With End Sub Private Sub CommandButton2_Click() With Application.FileDialog(msoFileDialogFilePicker) .Filters.Clear .Filters.Add "テキスト", "*.csv;*.txt", 1 If .Show = 0 Then Exit Sub Me.TextBox2.Text = .SelectedItems(1) End With End Sub Private Sub CommandButton3_Click() Dim file_name As String If TextBox1.Text = "" Then MsgBox "ファイルが指定されていません", vbInformation ElseIf TextBox1.Text = "" Then file_name = TextBox1.Text = "" Shell "Workbooks.OpenText TextBox1.Value " End If End Sub Private Sub CommandButton4_Click() yesno = MsgBox("保存後、ファイルを閉じます。終了していいですか?", vbYesNo + vbQuestion, "Reportの終了") If yesno = vbYes Then ActiveWorkbook.Save ActiveWorkbook.Close Else End If End Sub

  • VBAでファイル名の取得方法

    FileDialogを使用してユーザーにファイル名を指定してもらい、結果からフルパスを取得する事はできたのですが、パスではなくファイル名を取得するにはどのようにすれば良いのでしょうか? Dim lngCount As Long ' ファイル ダイアログを開きます。 With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show '選択された各ファイルのパスを表示します。 For lngCount = 1 To .SelectedItems.Count lblPath_1.Caption = .SelectedItems(lngCount) Next lngCount End With

  • Word VBA: 任意の html ファイルをファイルを開くダイアログから開くには?

    こんにちは、 Word VBA のことで質問があります。 今任意の html ファイルを[ファイルを開く]ダイアログから開くというマクロを作りたいので下記のプログラムを書きましたがこれではあらかじめファイル名やパスが指定されたものになってしまうので目的を満たせないと気づきました。。 Documents.Open メソッドではファイル名の指定が必須だそうですし、、そうするとほかに考えられる手段はどんなものか、 変数を使えばできそうですが、具体的にはどんなプログラムを組めばよいかなど悩んでいます。 ちなみにマクロを作成する環境は word 2003 です。 ***以下、現状のプログラム内容です。*** Private Sub OpenButton_Click() '任意の html ファイルを開き、[File Path] テキストフィールドへファイルのフルパスを表示します Dim dlgOpen As FileDialog Set dlgOpen = Application.FileDialog( _ FileDialogType:=msoFileDialogOpen) With dlgOpen .AllowMultiSelect = False If .Show = -1 Then MainWindow.TextBox1 = .SelectedItems(1) Documents.Open FileName:="C:\test.html", Format:=wdOpenFormatEncodedText End If End With End Sub ************************************************************ 目的を満たすためにはどのようなプログラムをかけばよろしいのか どなたかご指導いただけませんでしょうか よろしくお願いいたします。

  • ExcelVBA どこが間違えていますか?

    ExcelVBA 初心者です。 下記のようなプロシージャを人様の作ったのをコピーして作ったのですが意図したとおりになりません。どこが間違っているのか教えてください。 私の意図は選択したフォルダの中の全ファイル(Book)名をアクティブシートのA列に順番に表示したい、です。今は実行すると全部セルA1に表示されてしまって、最後の1つのファイル名しか分かりません。ファイルごとに別のセルに表示したいのです。よろしくお願いします。 Sub ファイル一覧() Dim foldername As String Dim filename As String Dim i As Integer Dim dlg_folder As FileDialog Set dlg_folder = Application.FileDialog(msoFileDialogFolderPicker) Folder_Dialog: dlg_folder.Show If dlg_folder.SelectedItems.Count <> 1 Then Exit Sub Else foldername = dlg_folder.SelectedItems.Item(1) MsgBox "選択したフォルダは " & foldername & " です。" filename = Dir(foldername & "\*.xls", vbNormal) If filename = "" Then MsgBox "Excelファイルがありません。" GoTo Folder_Dialog End If End If Set dlg_folder = Nothing Do While filename <> "" For i = 1 To Workbooks.Count Cells(i, 1).Value = filename i = i + 1 Next i filename = Dir() Loop MsgBox "フォルダ " & foldername & " の中のファイルはすべて表示されました。" End Sub あれ、なぜかインデントが無効になっています。