• ベストアンサー

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

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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

  • Excelでヘッダー、フッターの一括編集

    Excel 2000で、複数のシートのヘッダー及びフッターを一括に編集できるのでしょうか? 又は、出来る方法をご存じの方教えてください。 シートでヘッダー及びフッターを編集しようとするとき、 複数のシートを同じヘッダー及びフッターの内容に編集したい。 いちいちシート毎に編集するのではなくて、一括に複数のシートのヘッダー及びフッターを同一内容に編集が出来ないでしょうか。

  • エクセルのヘッダー編集について

    エクセル2007のヘッダーの編集について教えてください。 メニューの「ページレイアウト」の「余白(ユーザ設定の余白)」→「ヘッダー・フッター」からヘッダーの編集するときに、ダウンリストから選べるようにしたいのですが、どうすれば良いのでしょうか。 よろしくお願いします。

  • excelで全シートに同じヘッダーを設定したい!

    タイトルの通りなのですが、excelで同じヘッダーを全シートに設定したいんです。 200シートくらいあるので・・方法を教えてください!!

  • エクセルでのヘッダーの編集について教えてください。

    宜しくお願いします。 エクセル2000で、完成した書類を印刷する時のヘッダーに、同じブックの 別のシートにある名簿(例えば A1~A10に10名入力してあるとして)を 順番に1名ずつ宛名のように表示する編集方法はあるのですか?教えてください。

  • 複数シートにまたがったExcelのヘッダー情報を一度に変更する方法は?

    Excelシートのヘッダ情報を(表示→ヘッダーとフッター→ヘッダーの編集)一度に同じものに変更する方法を教えて下さい。 Wordファイルであれば上記操作によって文書のヘッダーが一度に変更される(当たり前)なのですが、Excelで複数シートに分かれたヘッダー情報を編集するのにシートを選んでは上記操作をする・・・というのがかなり億劫で・・・(シート数が膨大だったりするとかなり萎えます) ※シートは分かれていますが、当然1ファイルです。

  • エクセル ヘッダーにセルの値について教えて下さい

    エクセルで見積書を作成しています。 シート1を表紙、シート2を内訳書としています。 シート1のC1セルに打ち込んだ物件名をシート2のヘッダーになるよう設定したいのですが、 Private Sub Workbook_BeforePrint(Cancel As Boolean)  ActiveSheet.PageSetup.leftheader = Range("sheet1!C1").Value End Sub VBEのThisWorkbookに上記を貼付けたところシート2のヘッダーに物件名を表示できましたが、シート1のヘッダーにも出てしまいます。 シート2にのみ表示させる方法ってあるのでしょうか?

  • どのシートにもヘッダーの日付をいれたい

    あるブック内のシートすべてにヘッダーの日付をいれたいです。ブック内でシートが削除されたり挿入されたりします。そのたびに編集するのをついつい忘れていまうので、最初からあらかじめ設定しておく方法ないでしょうか?よろしくお願いします

  • エクセル2010のシート上での編集が・・・

    エクセル2010のシート上での編集が全く出来ません。例えばシート5で間違いを見つけて1箇所だけ数字を変更したら全部のシートが同じ数字になったり、日付を変更したら全部同じ日付になったりして編集が出来ません。どうしたらいいですか?教えてください。

  • エクセルでヘッダー

    エクセルのヘッダーで自動的に一年前の「平成19年」とに入れたいのですが出来ますか? 申告の準備を毎年エクセルで集計しています。 基本となるシート(項目などを入れてある)を作っていて 毎年そのシートのコピーに数字の入力をして印刷しています。 印刷するときヘッダーに自動的に1年前の「平成○○年」と 入るように基本のシートを作っておけば便利かも! と思ったのですが、出来るのか?やり方?です。 よろしくお願いします。

  • エクセルのシートの移動禁止方法について

    'UserForm1 Public 着目シート名  Public シート変更禁止 As Boolean Private Sub CommandButton1_Click() 着目シート名 = "Sheet1" シート変更禁止 = True End Sub Private Sub CommandButton2_Click() 着目シート名 = "Sheet2" シート変更禁止 = True End Sub 'ThisWorkbook Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) If シート移動禁止 = True Then Worksheets(着目シート名).Activate End If End Sub '標準モジュール Sub test() UserForm1.Show End Sub 'UserForm1には、CommandButton1,CommandButton2のみ貼り付けています。 'フォームは、ShwoModal=Falseにしています それぞれのモジュールに上記のコードを書いて、フォーム上のボタンを押すと、 シートの変更が出来ないようにしようと考えています。 シートは、任意に変更しようと考えていますので、シート名の指定に変数を使いたいのですが、スコープの問題からか? 着目シート名がEmpteyになってしまい、自由に変更が可能となってしまいます。 何が、悪いのでしょうか? どなたか詳しい方教えて頂けないでしょうか?宜しくお願いいたします。 (Workbook_SheetDeactivateによる方法は、ここで教えて頂いた方法をアレンジしようとしている部分です。) QNo.2503758の続きの質問です。

専門家に質問してみよう