VBA テンプレートシートを別ブックで保存

Tag:

テンプレート用のシートに情報を書き込んだ後、そとシートのみ別ブックとして保存してみます。

処理概要

大まかな処理順序は以下の通りです。
1. テンプレートシートをコピー
2. コピーしたシートに情報を入力
3. コピーしたシートを新規ブックにコピー
4. 新規ブックを保存
5. コピーしたシートを削除

※ここでは、以下の設定で処理を行っていきます。
テンプレシートの名前:テンプレ_test
新規ブック保存先フォルダ:自ブック配下のxxxフォルダ
新規ブック名:yyy

「テンプレ_test」シートは以下のようになります。
vba_temp1

ソース

Sub 出力()
On Error GoTo errorproc
    Application.EnableEvents = False   'イベント発生を抑制する
    Application.ScreenUpdating = True  '画面の動きを止める

    template = "テンプレ_test"
    o_sheet = "test"
    o_folder = ThisWorkbook.Path & "\xxx"
    o_file = "yyy"
    
    Sheets(template).Copy After:=Sheets(1)
    ActiveSheet.Name = o_sheet
    
    Cells(1, 2) = "テンプレから新規ブックを作成するテストです。"
    
    Sheets(o_sheet).Copy

    '保存先フォルダが存在しない場合フォルダを作成
    If Dir(o_folder, vbDirectory) = "" Then
        MkDir o_folder
    End If

    'ファイル保存時にメッセージを表示させない
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=o_folder & "\" & o_file, _
    FileFormat:=xlWorkbookDefault
    Application.DisplayAlerts = True
    ActiveWindow.Close

    'シート削除時にメッセージを表示させない
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
endproc:
    Application.EnableEvents = True
    Application.ScreenUpdating = False
    Exit Sub
errorproc:
    MsgBox Err.Description & Err.Number
    GoTo endproc
End Sub
16行目
新規ブックが作成されます。Copyメソッドは、コピー先を指定していない場合、新規ブックとしてコピーします。
24行目
同じファイルが存在するときに上書きするか確認するメッセージを表示させないようにしています。
31行目
シート削除してもよいか確認するメッセージを表示させないようにしています。

動作確認

上記プロシージャを実行すると、自ブック配下に「xxx」フォルダが作成され、その配下に新規ブック(yyy.xlsx)が保存されます。
vba_temp2

yyy.xlsxを開いてみると、以下のようにテンプレートにメッセージが入力されています。
vba_temp3

スポンサーリンク