dポイントプレゼントキャンペーン実施中!

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

Excel WorkBook の Openイベント で『ヘッダーに表題を自動設定』するようにしました。

この設定されたヘッダーの内容を変更できないようにしたいのですが、良い方法はないでしょうか。

A 回答 (3件)

エクセルのオブジェクトには、色々なプロパティで変更可能なものやメソッドの利用がある。

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

うまくいきました。

次のとおり記述してコンパイルがとおりました。

Cancel As Boolean を追加しました、作法が正しくなかったようです。 

Private Sub Workbook_BeforePrint(Cancel As Boolean)

アドバイスを頂いた皆さん、ありがとうございました。

お礼日時:2009/12/26 11:31

こんな方法は如何?


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

以上参考まで
    • good
    • 0
この回答へのお礼

うまく解決できそうですが。

回答、ありがとうございました。
独学でEXCEL-VBAに取り組んでいるので、このイベントの存在を知りませんでした。
早速、WorkBookのイベントとして下のように書いてみましたが、コンパイルエラー
が出てしまいます。 
Private Sub Workbook_BeforePrint() の表現をいろいろと変更してみましたが、
エラーになってしまいます。 どこが悪いか、教えて頂けないでしょうか。

『エラーの内容』
プロシージャの宣言がイベント又はプロシージャの定義と一致しません。

『コードの内容』
 Private Sub Workbook_BeforePrint()

Dim Title As String
Title = "環境側面の測定方法_決定"
ActiveSheet.PageSetup.LeftHeader = Title

 End Sub

お礼日時:2009/12/26 09:06

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

    • good
    • 0
この回答へのお礼

質問内容が曖昧でした。

ヘッダーの内容は意図したとおりの内容で自動設定できます。

しかし、Bookが開いた状態でヘッダーを編集し、印刷すれば

印刷されたシートのヘッダーは自由に設定できてしまいます。

これが今、抱えている課題であり、これを解決したいのですが。

質問内容が曖昧で、申し訳ありませんでした。

お礼日時:2009/12/26 00:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!