VBA Excelファイルをきれいに整えるマクロ

vba

Excelファイルの体裁を整えるマクロです。フォルダ内にある全てのExcelファイルの全シートを「A1セル選択、指定表示率、スクロール最上位(固定表示時含め最上位)、最左側シート選択」状態にして上書き保存するマクロを紹介します。クライアント納品時や上司にレビュー依頼する前に実行し体裁を整えることができます。

Excelの体裁を整えるマクロ

■Excelファイル表示修正マクロ

Sub excel_layout_fixup()

   '#画面更新オフ
   Application.ScreenUpdating = False

   '########## 変数定義 ##########
   '#現在のフォルダ
   Dim mydir As String
   
   '#対象のエクセルファイル
   Dim file As String
   
   '#各シート
   Dim s As Object
   
   '#インプットボックス
   Dim buf As String
   
   '#開始メッセージ
   Dim msg1 As String
   
   '#終了メッセージ
   Dim msg2 As String

 '########## 事前準備 ##########
   '#現在のフォルダを取得
   mydir = ThisWorkbook.Path & "/"
   
   '#フォルダ内エクセルを取得(最初のファイル名を取得)
   file = Dir(mydir & "*.xls*")
   
   '#開始メッセージ設定
   msg1 = "表示倍率を設定してください。" & vbCrLf & _
         "(デフォルトは100%です)"
      
   '#インプットボックスの設定
   buf = InputBox(msg1, Default:=100)

   '#終了メッセージ設定
   msg2 = "以下のファイルを修正保存しました。" & vbCrLf & "<A1セル選択、表示率" & buf & "%、スクロール最上位、最左側シート選択>" & vbCrLf & vbCrLf

 '########## メイン処理 ##########
   '#フォルダ配下のエクセルをすべて処理
   Do While file <> ""
     
     '#xls/xlsxをオープン ※xlsmファイルは除く
     'If LCase(file) Like "*.xls" And Not (LCase(file) Like "*.xlsm") Then
     If LCase(file) Like "*.xls" Or LCase(file) Like "*.xlsx" And Not (LCase(file) Like "*.xlsm") Then
     
       '#ファイルを開く
       Workbooks.Open Filename:=mydir & file
      
       '#各シートごと処理
       For Each s In ActiveWorkbook.Sheets

          '#シートをアクティブ
          s.Activate
          
          '#A1にカーソルを合わせる
          ActiveSheet.Range("A1").Select
       
          '#倍率を指定倍率にする※デフォルト100%
          ActiveWindow.Zoom = buf
         
          '#スクロールで一番左上へ
          ActiveWindow.ScrollColumn = 1
          ActiveWindow.ScrollRow = 1
   
       '#次のシートに対して処理する
       Next s
      
       '#一番左のシートに移動
       Sheets(1).Select
       
       '#上書き保存して閉じる
       ActiveWorkbook.Save
       ActiveWorkbook.Close
      
       '#終了メッセージにファイル名を格納
       msg2 = msg2 & file & vbCrLf

      End If
      
     '#次のファイルを格納(※引数なしDirは次のファイルを返す)
      file = Dir
   Loop
     
   '#終了メッセージ表示
   MsgBox msg2
   
   '# 画面更新オン
   Application.ScreenUpdating = True
  
End Sub

■使用方法
上記マクロをExcelマクロ(.xlsb)に記載して保存します。任意のフォルダにExcelマクロと修正したいExcelファイルを配置しマクロを実行すると自動で整形して上書き保存します。

①エクセルマクロと修正したいエクセルを同じフォルダに配置(※複数可能)

②マクロを実行すると以下ウィンドウが表示されますので設定したい表示倍率を入力後、OKを押します。

③しばらくすると以下ウィンドウが表示されますので、OKを押すとマクロが終了します。

以上です。
以降はこのマクロの詳細説明です。

Excelマクロの作成方法をご紹介します(初心者向けですので、詳しい人は読み飛ばしていただいて問題ございません)

Excelマクロ新規作成

まずエクセルを新規作成で開きます。

Excel上部メニューの「ファイル」→「名前をつけて保存」を押下します。

Excelをマクロ形式で保存します。保存画面で「ファイルの種類」を「Excel マクロ有効ブック(*.xlsm)」にして保存します。

マクロ形式でExcelが作成されました。

「開発」タブ表示

開発タブを表示します。Excelはデフォルトでは表示されていないので表示させます。Excel上部メニューから「ファイル」→「オプション」を押下します。

「リボンのユーザー設定」から左側の「開発」にチェックを入れ「OK」を押下します。

「開発」タブが表示されました。

マクロコード埋め込み

「開発」タブから「Visual Basic」を押下します。

表示されたウィンドウの上部タブメニュー「挿入」から「標準モジュール」を押下します。※方法は色々あると思いますが、ここでは簡単な方法を紹介します。

左側ツリーの「標準モジュール」→「Module1」が選択されていることを確認します。

右側のウィンドウに冒頭にあるマクロのコードを貼り付けます。

実行用ボタン作成

「挿入」→「図形」→任意の図形を選択します。

マウスをドラックして図形を作成します。

良い感じに作成します。

図形を選択して、右クリック→「マクロの登録」を押下します。

マクロ名を先ほど貼り付けたコードの名前を選択します。マクロの保存先を作成したExcelマクロ名にし「OK」を押下します。

これで図形を押下するとマクロが実行できます。

Excelの体裁を整えるマクロ 実行処理説明

更新対象ファイル準備

同じフォルダに、作成したマクロと更新対象Excelファイルを同階層に格納します。

更新対象Excelファイルは以下です。※サンプルで用意したものです。

以下の状態で保存しました。

マクロ実行

マクロを実行します。前項で作成した図形のボタンを押下します。

任意の表示倍率を入力して「OK」を押下します。

マクロ実行が完了すると以下ウィンドウが表示されますので、「OK」を押下してください。

更新対象Excelファイルを開くと、設定した体裁に修正されています。

以上です。
クライアント納品時や上司に提出する時に使用すると体裁がきれいになります。
訪問者様の何かの助けになれば幸いです。

コメント