アラサーからのプログラマー生活

アラサーの新米PGが必死に頑張る成長記録です。あとは旅行とか。

【ExcelVBA】シート、ブック、印刷設定でよく使うプロパティの設定方法をまとめたよ!

おはようございます、堀井です。

VBAって、覚えておいて損はないくらいのサブ言語として捉えられているようなイメージがあります。

その為、ファイル操作とか忘れがちになってしまいます。

ですので、本日は少し趣向を変えて忘れがちな操作をまとめた記事を書きました。

まとめなので文章そのものは控えめです、よろしくお願いします。

なお、このコードはそのまま動かしてもまともに動きませんので十分ご注意ください。

必要なところだけ切り取ってご利用ください。

さて、続きをどうぞ。



シート操作

初めにシート操作です。

Private Sub シート操作()
    Worksheets.Add before:=Worksheets("Sheet1")     '指定位置にシートを追加
    
    With Worksheets("Sheet1")
        .Activate                                   'アクティベート
        .Delete                                     '削除
        .Copy after:=Worksheets("Sheet2")           '指定位置にコピー
        .Move after:=Worksheets("Sheet2")           '指定位置に移動
        .name = "201906"                            'シート名変更
        .Tab.Color = RGB(153, 51, 204)              'シートタブの色を変更 #93c
        .Visible = False                            '非表示にする
    End With
    
    Application.DisplayAlerts = False               '削除時などのメッセージを非表示
End Sub

シートを追加、削除、色の変更をする際に利用することができます。

特にApplication.DisplayAlertsが便利かと思います。

人に使ってもらうときに削除時だけ手動で操作させてしまうのはユーザビリティが悪いですからね・・・。


ブック操作

続きましてブック操作です。

Private Sub ブック操作()
    Dim pass As String
    Dim name As Variant
    
    pass = "C:\Users\Desktop"
    name = "test.xlsm"
    
    Workbooks.Add                   '新規ブックの作成
    
    With Workbooks(name)
        .Close Savechanges:=False   '保存しないで閉じる
        .Save                       '上書き保存
    End With
    
    '読み込み専用で開く
    Workbooks.Open Filename:=pass & name, ReadOnly:=True
    
'-------------------------------
'   複数のブックを開く方法
'-------------------------------
    '指定したパス内にあるxlsm形式の通常ファイルを全て開くマクロ
    name = Dir(pass & "*.xlsm", vbNormal)           'vbNormal:通常ファイル
                                                    'vbHidden:隠しファイル
    Do While name <> ""                             'vbSystem:システムファイル
        Workbooks.Open pass & name
        name = Dir()
    Loop
End Sub

複数のブックを使って操作することが多い方は、このモジュールを単独で用意しておいて引数を投げる方法をとっても良さそうですね。

また、複数のブックにまたがって操作する場合、ワークブックのActivateを忘れずに。


印刷設定

Private Sub 印刷設定()
    With ActiveSheet
        .PrintPreview                           '印刷プレビュー
        .PrintOut From:=1, To:=2, Copies:=3     '1~2ページ目を3枚印刷
    
        With .PageSetup
            .PrintArea = "A1:C5"                '印刷範囲の設定
            .PrintArea = False                  '印刷範囲のクリア
            
            .PaperSize = xlPaperA4              'A4サイズに設定
            
            .LeftHeader = "&F"                  '&F:ブック名
            .RightHeader = "&P / &N"            '&A:シート見出し
                                                '&D:現在の日付
                                                '&T:現在の時刻
                                                '&P:ページ番号
                                                '&N:総ページ数
            'シートを1ページに印刷
            .Zoom = False
            .FitToPagesTall = 1
            .FitToPagesWide = 1
        End With
    End With
End Sub

これは本当によく使われそう。

ヘッダーはどうなんでしょうか?

どちらかと言うとWordの方が使われそうな気はしていますが・・・。

印刷範囲の設定や、シートを1ページに印刷するのは個人的によくやりますね。

枠線だけが印刷された紙を何度手に取ったことか・・・!!



個人利用のためにインターネットに放流した形になりましたがどうでしょうか。

自分が使いたくて書いたので個人的には大変便利です。

イコール得した人が一人以上いるので良し。

それではまた次回。