'--------------------------------------------------
'プロシージャの概要:
'処理名:プロシージャA
'概要:ブックを複製して読み取り専用で開き、元ブックのA1セルをクリアして保存閉じる
'--------------------------------------------------
Sub procedureA()
Dim wbOriginal As Workbook
Dim wbReadOnly As Workbook
Dim wsTarget As Worksheet
Dim strSheetName As String
' エラーハンドリング開始
On Error GoTo ErrorHandler
' 前段の処理(省略)
' ...
' 変数初期化
Set wbOriginal = ThisWorkbook
strSheetName = "シートA"
' 元ブックをコピーして新しいブックを作成
wbOriginal.Activate
Set wbReadOnly = Workbooks.Add
wbOriginal.Worksheets.Copy Before:=wbReadOnly.Worksheets(1)
' 新しいブックの不要なシートを削除
Application.DisplayAlerts = False
wbReadOnly.Worksheets("Sheet1").Delete
Application.DisplayAlerts = True
' 読み取り専用ブック(ブックB)を読み取り専用推奨に設定
wbReadOnly.ReadOnlyRecommended = True
' 読み取り専用ブックをアクティブにする
wbReadOnly.Activate
' 元ブック(ブックA)でA1セルをクリアして保存
wbOriginal.Activate
Set wsTarget = wbOriginal.Worksheets(strSheetName)
wsTarget.Range("A1").Clear
' 元ブックを保存して閉じる
wbOriginal.Save
wbOriginal.Close SaveChanges:=False
' 読み取り専用ブックをアクティブにして処理完了
wbReadOnly.Activate
Exit Sub
ErrorHandler:
' エラー情報を表示
MsgBox "ブック処理でエラーが発生しました。" & vbCrLf & _
"エラー番号: " & Err.Number & vbCrLf & _
"エラー内容: " & Err.Description, _
vbCritical, "エラー"
' DisplayAlertsを元に戻す
Application.DisplayAlerts = True
' エラー情報をクリア
Err.Clear
End Sub