【MOS】【Microsoft Office Excel】【マクロ/VBA】ダイアログを表示して選択したファイルを開くマクロ
- 2015/12/22 14:30
- GetOpenFilenameメソッド
- Openメソッド
- For Eachステートメント
- 4
ダイアログを表示して選択したファイルを開くマクロはこんな感じです。
ダイアログを表示して選択したファイルがまだ開かれていなければ開く
同じファイル名のファイルが開かれていた場合は処理を中断します。
Sub SelectFileOpen() '// 変数の定義 Dim wbList As Workbook Dim flg As Boolean Dim filePass, fileName As Variant '//開閉確認フラグの初期化 flg = False '//開こうとしているファイルパスとファイル名を変数に入れる filePass = Application.GetOpenFilename(Title:="開くファイルを選択してください。") '//選択したファイルに対しての処理 If filePass <> False Then '//ファイルが指定されれば続行する fileName = Dir(filePass) '//現在開いているワークブックを調べる For Each wbList In Workbooks '//現在開いているワークブック内に同ファイルがあればフラグを立たせる If wbList.Name = fileName Then flg = True Exit For End If Next wbList If flg = True Then '//メッセージを表示して中断。 MsgBox("選択したファイルは既に開かれています。ファイルを閉じてやり直してください。") Else '//選択されたファイルを開く Workbooks.Open fileName End If Else '//メッセージを表示して中断 MsgBox "ファイルが選択されませんでした。" End If End Sub
ダイアログを表示して選択したファイルがテスト.csvであれば開く
ファイル名の頭に「テスト」という文字が含まれていない場合は処理を中断します
選択したファイルが開かれている場合はなにもしません(開いたままです)。
Sub SelectFileOpen() '// 変数の定義 Dim wbList As Workbook Dim flg As Boolean Dim filePass, fileName As Variant '//開閉確認フラグの初期化 flg = False '//開こうとしているファイルパスとファイル名を変数に入れる filePass = Application.GetOpenFilename(Title:="開くファイルを選択してください。") '//選択したファイルに対しての処理 If filePass <> False Then '//ファイルが指定されれば続行する fileName = Dir(filePass) '//現在開いているワークブックを調べる For Each wbList In Workbooks '//現在開いているワークブック内に同ファイルがあればフラグを立たせる If wbList.Name = fileName Then flg = True Exit For End If Next wbList '//選択したファイルのファイル名を確認 If Left(fileName, 3) <> "テスト" Then '//メッセージを表示して中断 MsgBox "選択したファイルはテスト.csvではありません。" Exit Sub ElseIf flg = False Then '//選択されたファイルを開く Workbooks.Open fileName End If Else '//メッセージを表示して中断 MsgBox "テスト.csvが選択されませんでした。" Exit Sub End If End Sub