【Excel VBA】表範囲を選択して印刷プレビューを表示する

■概要

表のデータをすべて選択し、選択した範囲で印刷プレビューを実行する。

・処理概要
「ユーザ情報」シートのB2セルを開始とする、「ユーザ情報テーブル」を選択し、印刷プレビューを表示させる。

■フローチャート

印刷プレビュー実行処理について、フローチャートを以下に示す。

■プログラム仕様

入力処理内容出力
変数宣言
・シートオブジェクト(object型)
・シート名(文字列型)
・印刷開始範囲(文字列型)
・テーブル名(文字列型)
変数に初期値を設定する。
・シート名:”ユーザ情報”
・印刷開始範囲:”B2″
・テーブル名:”ユーザ情報テーブル”
「ユーザ情報」シートをセットする。
●「ユーザ情報」シートにフォーカス(with句)
|アクティブセル領域を選択する。
|選択した領域を「ユーザ情報テーブル」とする。
|選択した「ユーザ情報テーブル」を印刷範囲に設定する。
|印刷プレビュー実行する。
シートオブジェクトを解放する。

■サンプルコード

Option Explicit

' 印刷プレビュー実行処理
Public Sub PrintPreviewTable()
    
    ' 変数宣言
    Dim sht_userinfo        As Worksheet    ' シートオブジェクト
    Dim sht_name            As String       ' シート名
    Dim print_start_range   As String       ' 印刷開始範囲
    Dim table_name          As String       ' テーブル名
    
    ' エラー時の処理をセット
    On Error GoTo PrintPreviewTable_err
    
    ' 変数に初期値を設定
    sht_name = "ユーザ情報"
    print_start_range = "B2"
    table_name = "ユーザ情報テーブル"
    
    ' 「ユーザ情報」シートをセット
    Set sht_userinfo = ThisWorkbook.Worksheets(sht_name)
    
    ' 「ユーザ情報」シートにフォーカス
    With sht_userinfo
        
        ' アクティブセル領域を選択
        .Range(print_start_range).CurrentRegion.Select
        
        ' 選択した領域を「ユーザ情報テーブル」とする
        ThisWorkbook.Names.Add Name:=table_name, RefersToR1C1:=Selection
        
        ' 選択した「ユーザ情報テーブル」を印刷範囲に設定
        .PageSetup.PrintArea = table_name
        
        ' 印刷プレビュー実行
        .PrintPreview
    
    End With
    
    ' 終了処理へ移動
    GoTo PrintPreviewTable_exit

' エラー時の処理
PrintPreviewTable_err:

    ' エラー内容を出力
    MsgBox Err.Description
    
    ' 終了処理へ移動
    GoTo PrintPreviewTable_exit

' 終了処理
PrintPreviewTable_exit:

    ' シートオブジェクトを解放
    Set sht_userinfo = Nothing

End Sub

実行結果

事前準備:マクロ実行ボタン「印刷プレビュー」の作成


マクロ実行ボタン「印刷プレビュー」の押下


実行結果:印刷プレビューの表示

コメント