【EXCEL VBA】ファイルを保存するダイアログボックスを表示するには?

訪問して頂きありがとうございます。まさふくろーです。

今回は、ファイルを保存するダイアログボックスを表示する方法をご紹介します。

ファイルを保存するダイアログボックスを表示する

補足

ファイル保存する際は、「ファイルを保存」ボタンがあるシートは保存対象外にします。(マクロを除きたいため。)


作成手順

「開発」タブの確認

リボンに「開発」タブが表示されているかの確認をします。

 

 

「開発」タブが表示されていない場合は、「開発タブの表示」をご覧ください。

ボタンの作成

①「開発」タブをクリック⇒②「挿入」をクリック⇒③「ボタン」をクリックします。

 

 

シート上にカーソルを移動すると、ポインターが「+」の状態になります。

 

 

左クリックを押したまま、緑の矢印の方向にズルズルっとカーソルを移動します。

 

 

「マクロの登録」画面が表示されます。

 

 

①「マクロ名」を変更⇒②「新規作成」ボタンをクリックします。

 

 

MEMO
マクロ名は、どんな名前にしても問題ありませんが、処理と関係ある名前にしたほうが、コードを見る際にわかりやすくなります。

自動的にVBE(Visual Basic Editor)が起動します。

 

VBAコードの入力

VBE(Visual Basic Editor)のピンク枠の部分に、VBAコードを入力していきます。

 

 

入力するコードは以下になります。

ボタンの名前を変更する

エクセルのブックに戻り、ボタンの上にフォーカスを当てます。すると、ポインターが「」マークに切り替わります。

 

 

右クリックでショートカットメニューを表示し、「テキストの編集」を選択します。

 

 

ボタンの名前を変更します。

 

シートの名前を変更する

ボタンを作成したシートとは別のシートの名前を変更します。「Sheet1」シートにボタンを作成した場合は、「Sheet2」「Sheet3」のシート名を変更します。

 

VBAコードの保存

「ファイル」タブをクリックします。

 

 

「名前を付けて保存」を選択し、ファイル保存画面を起動します。

 

 

①ファイル名を入力⇒②「Excel マクロ有効ブック(*.xlsm)」を選択⇒③「保存」ボタンをクリックします。

 

解説

Array関数

構文 Array(ArgList)
引数 ArgList:値のリストをカンマ区切りで指定する。
解説 配列が格納されたバリアント型の値を返す。
ArgListに格納される配列のインデックスは0から開始する。
保存するシートを配列に格納する。「保存シート2」とメッセージ表示する。
Dim SheetName As Variant

SheetName = Array("保存シート1", "保存シート2")

MsgBox  SheetName(1)

Withステートメント

構文 With オブジェクト
 .オブジェクトに対する処理
 .オブジェクトに対する処理
End With
解説 「Withオブジェクト」から「End With」までの間は、Withオブジェクトで指定したオブジェクトの記述を省略できる。
「オブジェクトに対する処理」を記述するときは、「.プロパティ=設定値」「.メソッド」のように「.」(ピリオド)に続けてオブジェクトに対する処理を記述する。

セルA2~D2について、以下の処理を実行する。
1.フォントサイズを12ポイントにする。
2.太字にする。
3.左右中央にする。
4.Withステートメントを終了する。

Withステートメントを使用する場合
With Range("A2:D2")

   .Font.Size = 12
   .Font.Bold = True
   .HorizontalAlignment = xlCenter

End With

Withステートメントを使用しない場合
Range("A2:D2").Font.Size = 12
Range("A2:D2").Font.Bold = True
Range("A2:D2").HorizontalAlignment = xlCenter
Withステートメントを使用しなくても問題ありませんが、なるべく同じことを書かないようにするためにも、Withステートメントを使用することをおすすめします。

FileDialogオブジェクト

構文 Application.FileDialog(FileDialogType)
解説 ダイアログ画面を表すFileDialogオブジェクトを取得する。
引数

FileDialogType:ダイアログ画面の種類を指定する。

設定値 内容
msoFileDialogFolderPicker フォルダを選択する
msoFileDialogFilePicker ファイルを選択する
msoFileDialogOpen ファイルを開く
msoFileDialogSaveAs ファイルを保存する
ファイルを保存するダイアログボックスを使用する場合

With Application.FileDialog(msoFileDialogSaveAs)

    If .Show = True Then

        MsgBox  "名前を付けて保存ダイアログボックスが表示されました。"

    End If

End With

[FileDialog]Showメソッド

構文 FileDialog.Show
解説 ダイアログ画面を表示し、画面でクリックしたボタンに対応する戻り値を取得する。
「開く」ボタンまたは「保存」ボタンをクリックすると-1(True)、「キャンセル」ボタンをクリックすると0(False)が返る。
ダイアログボックスで「保存」ボタンをクリックした場合、メッセージを表示する。

Dim SelectFile As String

With Application.FileDialog(msoFileDialogSaveAs)

    If .Show = True Then

        MsgBox  "名前を付けて保存ダイアログボックスが表示されました。"

    End If

End With

SelectedItemsプロパティ

構文 SelectedItems(Index)
引数 Index:1からはじまり2、3・・・と設定する。
解説 選択したファイルのパスを取得する。
Indexに1を指定すると1つ目のファイルのパス、2を指定すると2つ目のファイルのパスとなります。
  保存するファイルのパス、ファイル名を取得する。

Dim SelectFile As String

With Application.FileDialog(msoFileDialogSaveAs)

    If .Show = True Then

        SelectFile = .SelectedItems(1)

    End If

End With

Copyメソッド

構文 Rangeオブジェクト.Copy([Destination])
解説 Rangeオブジェクトで指定したセルをコピーして、そのセルを引数で指定したセルに貼り付けるか、またはクリップボードに格納する。
引数 Destination:
貼り付け先の先頭のセル、またはセル範囲を指定する。
省略した場合は、コピーしたセルをクリップボードに格納する。
セルA2~B5をコピーして、セルA8を先頭とするセル範囲に貼り付ける。
Range("A2:B5").Copy Range("A8")
  新しいブックに「保存シート1」「保存シート2」シートをコピーする

Dim SelectFile As String
Dim SheetName As Variant

SheetName = Array("保存シート1", "保存シート2")

With Application.FileDialog(msoFileDialogSaveAs)

    If .Show = True Then

        SelectFile = .SelectedItems(1)

        Worksheets(SheetName).Copy

    End If

End With

SaveAsメソッド

構文 Workbookオブジェクト.SaveAs FileName,[FileFormat],[Password],[WriteResPassword],[ReadOnlyRecommended],[CreateBackup],[AccessMode],[ConflictResolution],[AddToMru],[TextCodepage],[TextVisualLayout],[Local]
解説 引数で指定した設定でブックに名前を付けて保存する。

主な
引数

FileName:
ブックの保存場所と名前を指定する。保存場所はパスで示し、パスと名前を「¥」でつなぎ、「"」(ダブルクォーテーション)で囲んで指定する。保存場所を省略すると、ブックはカレントフォルダー(現在の作業対象のフォルダー)に保存される。
FileFormat:
ファイル形式を指定する。
省略した場合、保存済みのブックは最後に保存されたときのファイル形式となり、新規ブックは通常のExcelのファイル形式となる。
設定値 内容(拡張子)
xlOpenXMLWorkbook Excelブック(.xlsx)
xlOpenXMLWorkbookMacroEnabled Excelマクロ有効ブック(.xlsm)
xlOpenXMLTemplate Excelテンプレート(.xltx)
xlOpenXMLTemplateMacroEnabled Excelマクロ有効テンプレート(.xltm)
xlExcel8 Excel97-2003ブック(.xls)
xlWorkbookNormal Excel97-2003ブック(.xls)
xlCSV カンマ区切りのテキスト(.csv)
xlText タブ区切りのテキスト(.txt)
Password:
読み取りパスワードを指定する。
WriteResPassword:
書き込みパスワードを指定する。
ReadOnlyRecommended:
読み取り専用を推奨するメッセージを表示する場合に「True」を指定する。
CreateBackup:
バックアップファイルを作成する場合は「True」を指定する。
  名前を付けて保存ダイアログボックスで指定したパス、ファイル名で保存する

Dim SelectFile As String
Dim SheetName As Variant

SheetName = Array("保存シート1", "保存シート2")

With Application.FileDialog(msoFileDialogSaveAs)

    If .Show = True Then

        SelectFile = .SelectedItems(1)

        Worksheets(SheetName).Copy

        ActiveWorkbook.SaveAs SelectFile

    End If

End With

最後まで読んでいただき、ありがとうございました!