#Excel VBA で シートを開くとき、必ずマクロを有効化してシートの更新をしてもらえるようにしてみた
Excelでワークブックを開くとき、セキュリティの警告が出ているとマクロが実行されない。
これは、セキュリティ的には、本来正しい動き。
でも、マクロを動かしてもらわないと、業務が成り立たないときがある。
Excelで更新されたとき、この変更されたデータを、外部データに更新させるというマクロが組み込んでした。
しかし、Excelブックを開くとき、PC環境によってはマクロを有効化されないまま、シートだけを更新して、マクロが実行されない(ボタンを押すが、無反応の)まま、上書き保存して終わりが多い。
今回追加するマクロは、Excelブックを開いたとき、必ずマクロを有効化しないと、データ更新シートが表示されないようにした。
そのとき、必ずマクロを有効「コンテンツの有効化ボタン」を押してもらえるように、警告シートだけを表示するようにして、マクロを有効化できたら、業務で使うシートに表示を切り替えるようにした。
###警告シートの準備
コンテンツ有効化になっていないときは、Sheet1を表示するように、同じブック内に新たにシートを準備する。ここでは、Sheet1とした。
Sheet1以外のシートは非表示にしている。
###追加するマクロ
マクロの有効化がされると、警告シートは非表示となり隠れ、そのほかのシートを表示する。
Excelブックを保存するときは、
・ Sheet1のみを再び表示
・ Sheet1以外のワークシートを非表示
にして、Excelブックを保存するようにマクロを作成してみた。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call ctrlVisible(False)
End Sub
Private Sub Workbook_Open()
Call ctrlVisible(True)
End Sub
Private Sub ctrlVisible(sheetMode As Boolean)
If sheetMode = False Then
Sheet1.Visible = True
End If
For Each objSheet In ThisWorkbook.Worksheets
If objSheet.Name <> "Sheet1" Then
objSheet.Visible = sheetMode
End If
Next
If sheetMode = True Then
Sheet1.Visible = False
End If
End Sub