訪問して頂きありがとうございます。まさふくろーです。
今回は、ファイルを保存するダイアログボックスを表示する方法をご紹介します。
目次
ファイルを保存するダイアログボックスを表示する
ファイル保存する際は、「ファイルを保存」ボタンがあるシートは保存対象外にします。(マクロを除きたいため。)
作成手順
「開発」タブの確認
ボタンの作成
①「開発」タブをクリック⇒②「挿入」をクリック⇒③「ボタン」をクリックします。
シート上にカーソルを移動すると、ポインターが「+」の状態になります。
左クリックを押したまま、緑の矢印の方向にズルズルっとカーソルを移動します。
「マクロの登録」画面が表示されます。
①「マクロ名」を変更⇒②「新規作成」ボタンをクリックします。
自動的にVBE(Visual Basic Editor)が起動します。
VBAコードの入力
VBE(Visual Basic Editor)のピンク枠の部分に、VBAコードを入力していきます。
入力するコードは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub ファイルを保存() 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 End Sub |
ボタンの名前を変更する
エクセルのブックに戻り、ボタンの上にフォーカスを当てます。すると、ポインターが「」マークに切り替わります。
右クリックでショートカットメニューを表示し、「テキストの編集」を選択します。
ボタンの名前を変更します。
シートの名前を変更する
ボタンを作成したシートとは別のシートの名前を変更します。「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について、以下の処理を実行する。
|
Withステートメントを使用する場合 | |
With Range("A2:D2")
.Font.Size = 12 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:ダイアログ画面の種類を指定する。
|
||||||||||
例 | ファイルを保存するダイアログボックスを使用する場合 | ||||||||||
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 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のファイル形式となる。
|
||||||||||||||||||
Password: 読み取りパスワードを指定する。 |
||||||||||||||||||
WriteResPassword: 書き込みパスワードを指定する。 |
||||||||||||||||||
ReadOnlyRecommended: 読み取り専用を推奨するメッセージを表示する場合に「True」を指定する。 |
||||||||||||||||||
CreateBackup: バックアップファイルを作成する場合は「True」を指定する。 |
||||||||||||||||||
例 | 名前を付けて保存ダイアログボックスで指定したパス、ファイル名で保存する。 | |||||||||||||||||
Dim SelectFile As String 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 |
最後まで読んでいただき、ありがとうございました!