• ベストアンサー

Excelシートのヘッダー編集禁止

Excelシートのヘッダー編集禁止 Excel WorkBook の Openイベント で『ヘッダーに表題を自動設定』するようにしました。 この設定されたヘッダーの内容を変更できないようにしたいのですが、良い方法はないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

エクセルのオブジェクトには、色々なプロパティで変更可能なものやメソッドの利用がある。それらの変更や利用のタイミング(前)で知らせてもらえるイベントは、極く限られたものしかない。メニュー利用操作のほとんどについて、個別にはそういうものは無いと考えたほうが当たっている。 例えばシートの削除やXXの設定など、変更しようとしたときイベントプロシに飛んでくれるとありがたいことは多々あり(特に禁止したいとき)、質問も時どき出ているが、そこまでエクセルのイベント告知が精緻にはしてない。 質問者は、シートやブックのイベントの種類を勉強したら実感するだろう。 それと別の観点からになるが、シートの保護などのことを勉強したらどうでしょう。 ーー 本件はたまたまWorkbook_BeforePrintイベントがあるので、そのときヘッダー・フッターの設定できる全内容(マクロの記録を採ると出てくる)を、質問者の望みの内容に書き換えて、印刷してはどうだろう。 印刷する前は、ページ設定の画面で、変更されたら変更したままになって、そう見えるが、やむをえない。 ーー 勝手なLeftHeader の1例 ThisWorkbookのイベントで Private Sub Workbook_BeforePrint(Cancel As Boolean) MsgBox "印刷前" ActiveSheet.PageSetup.LeftHeader = "&N & - &""-,標準""&P" End Sub

iso27001
質問者

お礼

うまくいきました。 次のとおり記述してコンパイルがとおりました。 Cancel As Boolean を追加しました、作法が正しくなかったようです。  Private Sub Workbook_BeforePrint(Cancel As Boolean) アドバイスを頂いた皆さん、ありがとうございました。

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

こんな方法は如何? >Excelシートのヘッダー編集禁止 これは難しいと思うので >Excel WorkBook の Openイベント で『ヘッダーに表題を自動設定』するようにしました。 ヘッダーは印刷の時しか使用しないのだから Openイベントで設定するのではなく ThisWorkbookモジュールのWorkbook_BeforePrintイベントで設定すれば 印刷プレビューや印刷時毎に設定されるので 編集しても元に戻すことができる 以上参考まで

iso27001
質問者

お礼

うまく解決できそうですが。 回答、ありがとうございました。 独学でEXCEL-VBAに取り組んでいるので、このイベントの存在を知りませんでした。 早速、WorkBookのイベントとして下のように書いてみましたが、コンパイルエラー が出てしまいます。  Private Sub Workbook_BeforePrint() の表現をいろいろと変更してみましたが、 エラーになってしまいます。 どこが悪いか、教えて頂けないでしょうか。 『エラーの内容』 プロシージャの宣言がイベント又はプロシージャの定義と一致しません。 『コードの内容』  Private Sub Workbook_BeforePrint() Dim Title As String Title = "環境側面の測定方法_決定" ActiveSheet.PageSetup.LeftHeader = Title  End Sub

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

保存時にもう一度『ヘッダーに表題を自動設定』するとか。

iso27001
質問者

お礼

質問内容が曖昧でした。 ヘッダーの内容は意図したとおりの内容で自動設定できます。 しかし、Bookが開いた状態でヘッダーを編集し、印刷すれば 印刷されたシートのヘッダーは自由に設定できてしまいます。 これが今、抱えている課題であり、これを解決したいのですが。 質問内容が曖昧で、申し訳ありませんでした。

関連するQ&A