|
▼まつ さん:
>試してみましたが、うまくいきませんでした。
ここの記述を詳細にする事が肝心なんですよ!!
「うまくいかない」の一言ではなく、
投稿したコードから試したオペレーションを事細かく
記述してください。それがフィードバックですよね!!
私も再度、投稿します。
まつ さんが問題を抱えているブックではなく、新規ブックの
Thisworkbookのモジュールに
'===============================================================
Option Explicit
Dim WithEvents new_bk As Workbook
'===============================================================
Sub 新規作成()
Set new_bk = Workbooks.Add
End Sub
'===============================================================
Private Sub new_bk_BeforePrint(Cancel As Boolean)
MsgBox "印刷できないよ"
Cancel = True
End Sub
まず、上記のプロシジャー「新規作成」を実行してください。
すると、
上記マクロを記述した以外に新しく作成されたブックが確認できるはずです
この新たに作成されたブックに対して、セルA1に適当な文字列(例えば、abc)と
入力後、印刷を実行してください。
「印刷できないよ」というメーセージが表示されるはずです。
いかがですか?
上記のマクロのあるブックは開いている状態でなければなりませんよ!!
だって、このイベントプロシジャーは
「新規作成」というプロシジャーによって作成されたブックに存在するわけではないのですからね!!
これが私が提案した方法です。
で、追加された投稿を拝見しましたが、
上記のサンプルが確認できたら、
上記を元に応用・工夫するような仕様にすることを提案します。
>
>前述では、詳細がわかりにくかったのでもう一度内容を記述します。
>新規作成は以下のように行われます。
>
> A.xlsに組み込まれたマクロで、
> ユーザーフォーム上に配置されたコマンドボタンのクリックイベントにより、
> ・新規ブック作成
> ・新規作成されたBook1.xlsに、C.xlsの"伝票"シートをコピー
>
>このBook1.xlsに対してある条件のとき印刷不可にしたいのです。
>
>それで最初の書き込みで記述したWorkBook_BeforePrintイベントのソースを
>A.xlsのどこかに組み込んでおき、それを新規ブック作成のタイミングで
>Book1.xlsのWorkBook_BeforePrintイベントにコピーできないものかと思ったのです。
やはり、本当の意味のコードのコピーはこの事象では不向きです。
こいうことは、VbProjectを操作することで可能です。
が、Excel2002からは、セキュリティの設定が必要ですし、既定値では
使用できません。
VbProjectを操作するようなコードは、VBAプログラマのためのツールとして使われるようなプログラムなら、よいのですがねえ
つまり、使う側(ユーザー)もこのセキュリティをはずす事の危険性などを
知っているような特殊な場合です。
まずは、上記の記述から動作を確認することから始めてください。
|
|