CSVファイルを開いた直後など、
そのままではやや見づらいデータがあります。
こういったデータを見やすくする機能がExcelにはたくさん用意されており、
- 列幅の自動調整(全選択して列と列の間をダブルクリック)
- オートフィルターの設置
- ウィンドウ枠をフィルター見出し行で固定
- フィルター見出し行を印刷タイトルに
- すべての列を1ページに印刷」に設定
- 上下左右の印刷余白を0
あたりがとても便利です。
ということで、これらをすべて実行してくれるマクロを作って、
1クリックで見やすいデータにしてしまいましょう!
実行するとこんな風に設定されるマクロです。
ついでに印刷設定も「見出し固定/列を1ページ/枠線表示」にしてこちら↓
本マクロはExcel起動時に裏で開かれる「個人用マクロブック」などに搭載して使ってください。
リボンやツールバーに登録すれば1クリックになりますし、
ショートカットキーへの登録も便利です。
ソースコード
Sub データ用の閲覧機能を一括設定する() On Error Resume Next ' ← 汎用マクロなのでエラーはとにかく無視 ' アクティブシートに対して実行 Dim ws As Worksheet: Set ws = ActiveSheet ' 見出し行はフィルターが既に設置されていればその行、なければアクティブセルのひとつ上 ' ※ ウィンドウ枠の固定と同じ仕様にしました。 Dim is実行前にフィルターあり As Boolean: is実行前にフィルターあり = ws.AutoFilterMode Dim R_見出し As Long Dim Rangeフィルター見出し As Range If is実行前にフィルターあり Then R_見出し = ws.AutoFilter.Range.Row Set Rangeフィルター見出し = ws.AutoFilter.Range.Rows(1) Else R_見出し = IIf(ActiveCell.Row = 1, 1, ActiveCell.Row - 1) End If ' 実行範囲はフィルターが既設置ならその範囲、なければシート全体 Dim C1st As Long, CLast As Long If is実行前にフィルターあり Then C1st = Rangeフィルター見出し.Column CLast = Rangeフィルター見出し.Columns.Count + Rangeフィルター見出し.Column - 1 Else C1st = 1 CLast = ws.UsedRange.Columns.Count + ws.UsedRange.Column - 1 End If ' フィルターをいったん解除してから列幅の自動調整(▼の分も広がるのが好きじゃないので) If is実行前にフィルターあり Then ws.AutoFilterMode = False ws.Range(ws.Columns(C1st), ws.Columns(CLast)).AutoFit ' 広すぎる列は狭くして「縮小して全体を表示」 Dim C As Long For C = C1st To CLast If Columns(C).ColumnWidth > 20 Then Columns(C).ColumnWidth = 20 Columns(C).ShrinkToFit = True End If Next ' フィルターを設置(元々あれば再設置) If is実行前にフィルターあり Then Rangeフィルター見出し.AutoFilter Else ws.Rows(R_見出し).AutoFilter End If ' 見出し行を行高を広げて中央上寄せに(これは好み) With ws.Rows(R_見出し) .RowHeight = 27 .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop End With ' ウィンドウ枠の固定 ActiveWindow.FreezePanes = False Cells(R_見出し + 1, ActiveCell.Column).Select ActiveWindow.FreezePanes = True ' 印刷余白を0 With ws.PageSetup .LeftMargin = 0: .RightMargin = 0 .TopMargin = 0: .BottomMargin = 0 .HeaderMargin = 0: .FooterMargin = 0 ' 印刷タイトルの設定 .PrintTitleRows = "$1:$" & R_見出し ' すべての列を1ページに印刷 .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = False End With End Sub
解説
一つ一つの機能を地道に設定していくだけのマクロですので、
各コメントを見れば大体の処理はわかるかなと思います。
「テーブル」機能が好きな方は、AutoFilterの設置あたりのコードを、
ListObjectの設置コードに変更してご利用ください。
あとは個人的な好みで実装している部分なのですが、
見出しの書式を
こんな風に「行高を2行分確保して上寄せ」するのが好みです。
フィルターの▼ブロックの分の列幅を確保する必要がなくなるので、
シート全体の横幅を結構抑えることができますよ。
気に入ったらこの仕様も取り入れてみてください。