トップ > 汎用コード > 値を変更しながらの連続シート出力

値を変更しながらの連続シート出力シート出力   2023.06.10

アクティブシートの指定したセルに、数字を順番に設定し、そのシートを別ブックとして連続で出力するマクロです。

あるセルに出席番号を入力したら、その生徒データを表示するシートを作成したが、番号を設定するごとに、そのシートのみを別のブックとして保存したい。そのような時に使用します。

[値を変更しながら連続印刷]はこちら
[値を変更しながら連続PDF出力]はこちら
[アクティブブックの全シートを一括出力]はこちら

【サンプルコード実行動画】 ※次の動画の氏名や点数はすべてダミーデータです


【お薦め】マクロ・プロシージャを管理する無料のツール!
 Excelマクロ管理ツール

サンプルコード2023.06.10

コードの貼り付け場所   VBAコードをカラーで印刷・Web掲載するためのツールはこちら

'-----------------------------------------------------------------------------
' 値を順に変えてのシートを出力
'-----------------------------------------------------------------------------
' アクティブシートの任意のセルに値を順に設定し、アクティブシートのみを
' 別ブックとして出力(保存)するマクロです
' アクティブシートが保護されているとエラーになるためシートの保護は解除してください
' また出力先に同名のファイルがある場合は上書きしますので気を付けてください
'[作成日]2023.06.10
'https://excel.syogyoumujou.com/vba/output_sheet.html
'-----------------------------------------------------------------------------
Sub ContinuousOutputAsSheet()

    '定数
    Const C_START    As Long = 1          '開始番号
    Const C_END      As Long = 5          '終了番号
    Const C_STEP     As Long = 1          '間隔
    Const C_ADDRESS  As String = "A1"     'セル番地
    Const C_FILENAME As String = "Sample" '出力ファイルの基準名
    
    'アクティブシートを変数に設定
    Dim Sh  As Worksheet
    Set Sh = ActiveSheet
    
    'フォルダの選択
    MsgBox "出力先のフォルダを選択してください", vbInformation
    Dim strFolderPath As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
            strFolderPath = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    
    'フォルダ参照に区切り文字追加
    strFolderPath = strFolderPath & Application.PathSeparator
    
    '画面更新停止・メッセージ非表示設定
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Dim i   As Long
    Dim AWB As Workbook
    
    For i = C_START To C_END Step C_STEP
        'アクティブシートの該当セルに値を設定
        Sh.Range(C_ADDRESS).Value = i
        
        '新規ブックにシートをコピー
        Sh.Copy
        
        '新規ブックを変数に設定
        Set AWB = ActiveWorkbook
        
        '数式を値に変換
        AWB.Worksheets(1).UsedRange.Value = AWB.Worksheets(1).UsedRange.Value
        
        '基準名+番号をファイル名として新規ブックを保存
        AWB.SaveAs strFolderPath & C_FILENAME & Format$(i, "000") & ".xlsx"
        
        '新規ブックを閉じる
        AWB.Close
    Next
    
    '画面更新設定・メッセージ表示設定
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

    'フォルダを開く
    Call Shell("C:\Windows\Explorer.exe " & strFolderPath, vbNormalFocus)
End Sub

定数を変更することで、様々な状況に対応出来ます。
・「開始番号」 設定する値の開始番号です。
・「終了番号」 設定する値の終了番号です。
・「間隔」 通常は「1」ですが、一つ飛ばしにする場合は「2」にします。
・「セル番地」 値を変更するセルの番地です。
・「出力ファイル基準名」 出力するファイル名の基準です。ファイル名は「基準名+番号」です。


【書籍紹介】知りたいがすぐわかる! やりたいがすぐできる!
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」(Kindle版)
ユーザーフォームを扱えると、VBAでできることが大きく広がります!
本書では、知りたいこと、やりたいことから、逆引きで学びを深められます。
140以上のサンプルファイル付き!



ページトップへ戻る

Excel 汎用コード

Copyright(C) 2009- 坂江 保 All Rights Reserved.