Excel VBA:ワークシートに標準書式や印刷設定を適用するマクロ

2014年10月13日月曜日

t f B! P L
Excelを開いて最初にすることは何ですか?

僕はまず書式(標準スタイル)と印刷の設定をします。もう何年もExcelを相手に試行錯誤してきたので、「僕が作る書類」の書式はかなり固まってきました。

ここでそのこだわりを語り始めると長いので省略して、僕が使っている「標準書式と印刷設定を適用するマクロ」を公開します。Personal.xlsに定義しておくと便利ですよ。
'===============================================================================
' ワークシートに標準書式と印刷設定を適用します。
'===============================================================================
Public Sub DefaultSetting()

    ' 画面更新停止
    Application.ScreenUpdating = False

    ' 定数
    Const C_NORMAL_FONT_NAME         As String  = "Meiryo UI"
    Const C_NORMAL_FONT_SIZE         As Integer = 10
    Const C_DEFAULT_ZOOM_PERCENTAGE  As Integer = 85
    Const C_DEFAULT_COLUMN_WIDTH     As Double  = 1.75
    Const C_DEFAULT_WHITESPACE_WIDTH As Double  = 1.5
    Const C_DEFAULT_HEADER_HEIGHT    As Double  = 0.8
    Const C_LEFT_HEADER              As String  = "&F - &A"
    Const C_LEFT_FOOTER              As String  = "印刷:&D"
    Const C_RIGHT_FOOTER             As String  = "&P / &N ページ"

    ' 定数(変更不要)
    Const C_NORMAL_STYLE_NAME As String = "Normal"

    ' 変数
    Dim v_book   As Workbook
    Dim v_sheet  As Worksheet
    Dim v_style  As Variant
    Dim v_window As Window

    ' 初期化
    Set v_window = ActiveWindow
    Set v_book   = ActiveWorkbook
    Set v_sheet  = ActiveSheet

    ' 既定スタイルの削除
    On Error Resume Next
    For Each v_style In v_book.Styles
        If v_style.Name <> C_NORMAL_STYLE_NAME Then
            v_style.Delete
        End If
    Next v_style

    ' 標準スタイルの設定
    On Error GoTo 0
    With v_book.Styles(C_NORMAL_STYLE_NAME)
        .VerticalAlignment = xlCenter
        .Font.Name         = C_NORMAL_FONT_NAME
        .Font.Size         = C_NORMAL_FONT_SIZE
    End With

    ' 表示倍率の設定
    With v_window
        .View = xlPageLayoutView
        .Zoom = C_DEFAULT_ZOOM_PERCENTAGE
        .View = xlPageBreakPreview
        .Zoom = C_DEFAULT_ZOOM_PERCENTAGE
        .View = xlNormalView
        .Zoom = C_DEFAULT_ZOOM_PERCENTAGE
    End With

    ' 列幅の設定
    v_sheet.Cells.ColumnWidth = C_DEFAULT_COLUMN_WIDTH

    ' 印刷の設定
    With v_sheet.PageSetup
        .Zoom           = False
        .FitToPagesWide = 1
        .FitToPagesTall = False
        .PrintQuality   = 600
        .LeftHeader     = C_LEFT_HEADER
        .LeftFooter     = C_LEFT_FOOTER
        .RightFooter    = C_RIGHT_FOOTER
        .LeftMargin     = Application
                         .CentimetersToPoints(C_DEFAULT_WHITESPACE_WIDTH)
        .RightMargin    = Application
                         .CentimetersToPoints(C_DEFAULT_WHITESPACE_WIDTH)
        .TopMargin      = Application
                         .CentimetersToPoints(C_DEFAULT_WHITESPACE_WIDTH)
        .BottomMargin   = Application
                         .CentimetersToPoints(C_DEFAULT_WHITESPACE_WIDTH)
        .HeaderMargin   = Application
                         .CentimetersToPoints(C_DEFAULT_HEADER_HEIGHT)
        .FooterMargin   = Application
                         .CentimetersToPoints(C_DEFAULT_HEADER_HEIGHT)
    End With

    ' 画面更新再開
    Application.ScreenUpdating = True

End Sub
enjoy :)

フォロワー

QooQ