Excel VBAで保存先フォルダを指定するのは意外と大変です。
けれどもフォルダ参照ダイアログを利用し、保存先を指定することが出来ます。
ディレクトリを変数化しコード埋め込みをすることも簡単に出来ます。
こんにちは、じゅんぱ店長(@junpa33)です。
エクセルを使った業務で、「作成したファイルの保存」は作業の最後に必ず必要な部分です。
今回は、この「作成したファイルの保存」を行うための重要部分。保存先フォルダをVBAで指定する方法を説明します。
- ブックの知識
- ブックの操作
- ワークブックを開くOpenメソッドの書き方 Excelマクロ
- VBA ブック名の取得法4つの解決策を詳しく解説
- VBA 開く,保存,閉じる,作成,削除 ブックの存在確認後のコード記述
- ファイルの保存に年月日+時刻を付けて管理する
- VBA 保存先フォルダをダイアログ指定で変数化
- 新規ブック5つの保存法。AddとSaveAsの使い方がわかる
- セル値を使いブック名として保存。統一フォームに有用
- VBA シートをブックから切り出し名付け保存する
- ブック名に作成者名を付加。 プロパティ変更とファイル保存
- 不要フォルダを削除する2種類のコードの作成
- 要らないファイルを自動削除するコードの作成
- ワークブックを閉じる12のパターン使い分け VBA最速理解
- ピンポイントでファイルを完全に削除するマクロ(コピペ可)
コンテンツ
Excel VBA 保存先フォルダをダイアログ指定で変数化
エクセルを使って業務を行う上で、VBAを使って作業スピードを上げる、
業務の効率化を図っておられる方も多いのではと思います。
VBAを使い「これでエクセルでの業務完了。この作業ファイルを保存しましょう。」という時に、
普通に「ファイル」→「名前を付けて保存」→
→(ファイル保存ダイアログを開いて)フォルダを選んで「ファイル名」を書き「保存」ボタン
になっている方も多いと思います。
折角、VBAを使っているのですから、ここは少し考えてみましょう。
たぶん、そこまで手を出さないのは、
VBAコード組みが進めないネックは、どこのフォルダに保存するか決まっていないから!
ではないでしょうか。
今回は、このお悩み解決で、
保存先フォルダをダイアログで簡単指定してさらに変数化する方法を説明します。
FileDialogオブジェクトを使いフォルダ選択ダイアログを表示
「FolderPathA」という変数に指定フォルダの絶対パス(フルパス)が代入されます。
Option Explicit
Sub フォルダOpen1()
Dim FolderPathA As String
With Application.FileDialog(msoFileDialogFolderPicker)
'デフォルトで表示するフォルダ
.InitialFileName = ThisWorkbook.Path & "\"
'フォルダを選択し「OK」をクリック
If .Show = True Then
'選択したフォルダのフルパスを入手
FolderPathA = .SelectedItems(1)
Else
'キャンセルを選択
MsgBox "フォルダ選択がキャンセルされました。", _
bExclamation
End If
End With
'デバッグプリント(説明用です)
Debug.Print "FolderPathA = " & FolderPathA
End Sub
VBAコードを実行すると、このようなダイアログが表示されます。
デフォルトのダイアログ表示は、「ThisWorkbook.Path」のディレクトリになります。
フォルダを選択して「OK」をクリックします。
変数FolderPathAにパスがセットされました。
Shell関数を使ってフォルダの選択ダイアログを表示します
「FolderPathB」という変数に指定フォルダの絶対パス(フルパス)が代入されます。
Sub フォルダOpen2()
Dim Shell As Object
Dim FolderPathB As String
Set Shell = CreateObject("Shell.Application") _
.BrowseForFolder(0, "フォルダを選択してください", _
, ThisWorkbook.Path)
'キャンセルを選択
If Shell Is Nothing Then
FolderPathB = ""
MsgBox "フォルダ選択がキャンセルされました。", _
vbExclamation
Exit Sub
Else
'フォルダを選択し「OK」をクリック
'選択したフォルダのフルパスを入手
FolderPathB = Shell.Items.Item.Path
End If
'デバッグプリント(説明用です)
Debug.Print "FolderPathB = " & FolderPathB
End Sub
VBAコードを実行すると、このようなダイアログが表示されます。
デフォルトのダイアログ表示は、「ThisWorkbook.Path」のディレクトリになります。
フォルダを選択して「OK」をクリックします。
変数FolderPathBにパスがセットされました。
保存先フォルダをダイアログ指定で変数化 まとめ
実際にVBEに記述するとこのようになります。
2種類のプロシージャーを実行すると、変数にはこのように値が代入されています。
エクセルファイルを保存する時に、この変数を保存先ディレクトリとして指定すればOKになります。
この様に毎回、ダイアログで保存指定先を変更することで、その度に違うフォルダにファイルを保存することが出来ます。
簡単なコードですので、あなたのVBAコードに埋め込んで、利用してみてください。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。