複数シートがある中の、特定のシートだけ他の人と共有したいという場面ってありますよね。
そんな時に必要なシートだけ別ブックとして名前を付けて保存する(エクセルの機能やVBA)方法について解説していきます。
これらの方法としては、主に
【エクセルの機能を使用】
・別ブックを作成し、コピー(元のブックのシートはそのまま)
・別ブックを作成し、移動(元のブックのシートは削除される)
【VBAを使用】
①保存したいシート名を指定
②シートが存在するか確認
③新しいブックを作成し、シートをコピー
④保存場所とファイル名を指定
⑤新しいファイルとして保存
上記のような流れでコードを書くことで指定したシートを取り出して保存することが出来ます。
では、一つずつサンプルを見ていきましょう。
エクセルで特定の1シートだけ別ファイルとして名前を付けて保存する方法1【コピー機能の使用】
エクセルの機能を使うと、特定のシートを【コピー】して、別のファイルとして保存することが簡単に出来ます。
まずは、取り出したいシートの上で右クリック。
そうするとメニューが出てくるので、[移動またはコピー]をクリックします。
そうすると[移動またはコピー]のダイアログボックスが表示されるので、[移動先ブック名]を”新しいブック”で指定します。
次に、[コピーを作成する]にチェックを入れてOKボタンをクリックします。
コピーしたシートだけが含まれる新しいブックが作成されました。
あとは通常通り【ファイル】から【名前を付けて保存】を選択すれば請求書シートだけの、別ブックが作成されます。
この場合、元のブックのシートはそのままです。元のブックは変更したくない、特定のシートだけ取り出したい、という場合に良いですね。
エクセルで特定の1シートだけ別ファイルとして名前を付けて保存する方法2【移動機能の使用】
次は、元のブックから完全にシートを取り出したい、つまり、特定のシートと元のブックを完全に分割したい場合の方法です。これにはシートの【移動】を使います。
やり方はコピーの場合とほぼ同じです。
取り出したいシートの上で右クリック。
そうするとメニューが出てくるので、[移動またはコピー]をクリックします。
[移動またはコピー]のダイアログボックスが表示されるので、[移動先ブック名]を”新しいブック”で指定します。ここで、[コピーを作成する]のチェックは外しておきましょう。
コピーとの違いはここですね。OKボタンを押すと
コピーしたシートだけが含まれる新しいブックが作成されるので、通常通り名前を付けて保存しましょう。
【移動】の場合、元のブックのシートはなくなるので、元のブックと特定のシートを完全に分割することが出来ました。
エクセルで特定の1シートだけ別ファイルとして名前を付けて保存する方法3【VBAマクロ使用】
最後に、特定のシートだけ別ファイルとして名前を付けて保存するVBAを使った方法をご紹介します。
定期的に同じ作業を繰り返す場合や、シート数が多い場合など、エクセルの機能を使って毎回保存するよりもずっと便利なので使ってみて下さいね。
Sub 特定のシート保存()
Dim シート As Worksheet
Dim 新しいブック As Workbook
Dim シート名 As String
Dim 保存先パス As String
' 保存したいシート名を指定
シート名 = InputBox("シート名は何ですか?")
' シートが存在するか確認
On Error Resume Next
Set シート = ThisWorkbook.Sheets(シート名)
On Error GoTo 0
If シート Is Nothing Then
MsgBox "シートが見つかりません。"
Exit Sub
End If
' 新しいブックを作成して、指定したシートをコピー
シート.Copy
Set 新しいブック = ActiveWorkbook
' 保存場所とファイル名を指定
保存先パス = Application.GetSaveAsFilename(シート名 & ".xlsx", "Excel Files (*.xlsx), *.xlsx")
' ユーザーが保存をキャンセルした場合、VBAを終了
If 保存先パス = "False" Then
新しいブック.Close False
Exit Sub
End If
' 新しいファイルとして保存
新しいブック.SaveAs 保存先パス
新しいブック.Close False
MsgBox "シートが正常に保存されました"
End Sub
このコードは、最初に入力したものと同じシート名を現在開いているブックから探し、シートが存在した場合は新しいブックを作成してシートをコピーするというコードです。
シートの移動ではないので、元のブックのシートは保持されたままとなります。
コードの説明
各部分を簡単に説明すると:
- シート名 = InputBox(“シート名は何ですか?“)
関数InputBoxは、文字列を入力できるダイアログボックスを表示し、そこに入力した文字列を返すことが出来ます。
ここにコピーしたいシート名を入力することで、変数“シート名“に入力した文字列が代入されます。
もしシート名が固定の場合は
シート名=“コピーしたいシート名“
とシート名を””で囲むといいです。そうすれば、毎回シート名を入力する手間をなくすことが出来ます。
・ Set シート = ThisWorkbook.Sheets(シート名)
で、ワークシートオブジェクトの変数“シート“へ入力したシート名を持つワークシートとしてセットします。その変数“シート“を使い、
If シート Is Nothing Then
で指定したシートがあるかどうかを確認します。
・シートがあった場合、 シート.Copyで指定したシートだけを新しいブックにコピーし、Application.GetSaveAsFilenameで[名前を付けて保存ダイアログボックス]を表示させています。
こうすることで保存する場所を選ぶことが出来るので、指定した場所、好きな名前で必要なシートだけ取り出した新しいファイルを作ることが出来ます。
このVBAをボタンやリボンに登録すれば、ワンクリックで呼び出せてとても便利ですよ。
ぜひ、使ってみて下さいね。
まとめ エクセルで1シートだけ保存(別ファイル:VBAマクロも:名前を付けて保存)する方法
ここではエクセルで1シートだけ保存(指定したシートだけ別ブック・ファイル:VBAマクロも:名前を付けて保存)する方法 について解説しました。
エクセルの扱いになれさらに快適に過ごしていきましょう!
コメント