• 締切済み

マクロを開いているシート全てに有効にする方法

シートを印刷すると、シートに印刷済み+日付が表示されるマクロを 作成しているのですが、作成したシートにしか有効になりません。 マクロを開いている全てのシートに有効にしたいのですが、 どのようにすればよいのでしょうか、教えてください。

みんなの回答

  • diashun
  • ベストアンサー率38% (94/244)
回答No.4

Sheetがいくつあるのかも、コードの内容も、環境も何もわかりませんが、すべてのSheetにマクロを反映させるには、それぞれのSheet Objectを有効化(「Set Object = ThisWorkBook.WorkSheets("Sheet1")・・・など)しなければなりません。その後それらのSheetObjectすべてに対して(またはループ処理で)「.PageSetup.RightFooter = """印刷済み"" &D "] (右フッター設定の場合)などの記述が必要です。 詳細が分からないので説明不足になりますが・・・。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

>作成したシートにしか有効になりません。 の意味がいまいち不明ですが・・・ マクロをどのように記しているのかにもよりますが、印刷のコマンドを利用してイベント処理しているなら、ANo2様の回答のようにすれば全て捉えられるはずです。 (マクロ実行ボタン(印刷ボタン?)などから実行しているとすると、エクセル本来の印刷コマンドを捉えることはできません) 書き込むシートを固定したマクロを作成しているなら、それが原因だと思われます。 印刷イベント処理で行う場合、その後でユーザに印刷をまかせると、ブック全体を指定して印刷することが可能です。(この場合、印刷済の表示とずれが生じてしまいます) 使う人には少々面倒になるかも知れませんが、このマッチングを重視するなら、イベント処理のなかで、選択されているシート(複数可)を指定して印刷そのものもマクロ側で実行し、もとの印刷命令に対してはCanncelを返すような処理にしておいたほうが良いかもしれません。

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

ThisWorkbookのWorkbook_BeforePrintが使用できるのではないでしょうか

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

現状のコードはどのようになってますか? 補足ランに書き込んでみてください。

nikku0175
質問者

補足

予算書というブックの ThisWrokbookに Private Sub Workbook_BeforePrint(Cancel As Boolean) Application.OnTime Now, "STAMP" End Sub 標準モジュールに Sub STAMP() With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 50, 50, 50) .Fill.Visible = msoFalse .Line.Visible = msoFalse With .TextFrame .Characters.Font.Name = "P明朝" .Characters.Font.Size = 30 .Characters.Font.ColorIndex = 3 .AutoSize = True .Characters.Text = "提出済" & vbLf & Date End With End With End Sub という風になっています。 このシートが原紙になっていて これを元に複数のシートが別のフォルダーに作成されています。 そのシートを印刷した際にもスタンプを押したいのですが。 宜しくお願いします。

関連するQ&A