【Excel】コピペ作業を何度も再現させるシートの準備

Excel
スポンサーリンク

AUTO_OPEN() AUTO_CLOSE() を使って書式設定をする

マスター(原紙)を作成する

  • コピペする受け側のExcelシートの書式設定を「全体」をクリックし「文字列」指定
    • 全てのデータをテキストのまま受け取ることができExcelの自動変換を回避
    • 特に日付への自動変換が厄介で”/”や”-”そして”.”がある数値データは注意
  • AUTO_OPEN()で文字列設定
  • AUTO_CLOSE()で列の数値設定を再設定しなおす

AUTO_OPEN() のサンプル(全て文字列で受ける)

※以下は私が使っているそのままを参考として載せているので、自分の作業に合わせて作り直すこと。

Sub AUTO_OPEN()
'
' シートOPENはいつも実行する
'
Dim i As Integer
Dim sh_nm As String

For i = 1 To 12
    sh_nm = i & "R"
    Sheets(sh_nm).Select
    Columns("A:N").Select
    Selection.NumberFormatLocal = "@"
    Cells(1, 1).Select
    
    sh_nm = i & "RODDS"
    Sheets(sh_nm).Select
    Columns("A:N").Select
    Selection.NumberFormatLocal = "@"
    Cells(1, 1).Select
Next i

Sheets("MEMO").Select
Cells(1, 1).Select

End Sub

AUTO_CLOSE() のサンプル (DB投入用に日付など詳細設定)

Sub AUTO_CLOSE()
'
' シートCLOSE時はいつも実行する
'
    Sheets("表D").Select
    Columns("A:A").Select
    Selection.NumberFormatLocal = "yyyy/mm/dd"
    
    Range("B:B,F:I,K:S,W:W").Select
    Selection.NumberFormatLocal = "@"
    
    Range("C:E,U:U,V:V,X:X,AB:AD").Select
    Selection.NumberFormatLocal = "0_ "
    
    Range("J:J,T:T,Y:AA,AE:AG").Select
    Selection.NumberFormatLocal = "0.0_ "
    Cells(1, 1).Select
    
    Sheets("表H").Select
    Columns("A:A").Select
    Selection.NumberFormatLocal = "yyyy/mm/dd"
    
    Range("C:C,G:CU").Select
    Selection.NumberFormatLocal = "@"
    
    Range("B:B,D:F,L:L,Q:Q,S:S,Z:AH,AL:AP").Select
    Selection.NumberFormatLocal = "0_ "
    
    Range("AI:AK,AQ:AU,BB:BG,BN:BS,BW:BY,CC:CE,CI:CK,CV:DH").Select
    Selection.NumberFormatLocal = "#,##0_ "
    Cells(1, 1).Select
End Sub

AUTO_OPEN() を使わず表を開く

  • Excel起動
  • メニュー「開く」
  • 「ファイルを開く」ダイアログで、開きたいファイルを選択(ここで選択するだけ)
  • Shiftを押しながら「開く」

※昔はエクスプローラーからSHIFT+WクリックでOKだったが、今は上記方法が確実!

AUTO_OPEN() AUTO_CLOSE() の実行順

  • Workbook_Open → auto_open
  • Workbook_Close → auto_close

実行順を把握していないと動作しないマクロになってしまう。また AUTO_OPEN() AUTO_CLOSE() は自動実行されるので、書式設定程度の暴走してもよいマクロにしておくことが小さなコツと言えるかもしれない。

タイトルとURLをコピーしました