- ベストアンサー
EXCELのBOOKを印刷禁止にするには?
皆さんのお知恵を貸してください。 タイトルのとおり「EXCELのBOOKを印刷禁止」にしたいのですがその方法がわかりません。過去ログを探してみると、「マクロ」を利用した方法があるのですが、ファイルを開くときに「マクロを無効」にしてしまえば意味がないような気がするのですが・・・・ 参考:http://oshiete1.goo.ne.jp/kotaeru.php3?q=103296 マクロを無効にしてしまえばシートが開けないとか、若しくは全く違う方法で印刷禁止に出来れば嬉しいです。 ちなみに EXCEL2003 でOSはXP proです。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 正直なところ、意外に難しいマクロですね。 以下は、あまり、現実的なマクロではありませんが、いろんな処理を施してあります。使う側は、かなりストレス度の高いブックです。ここまでしたものを配られると、詳しい人は、あまり良い気持ちがしないかもしれません(^^; それと、配布の際に、相手の人の名前を付けておくとか。 最初に配布用のブックは、必ずオリジナルを残して、コピーで行ってください。 できるなら、書式-スタイルで、フォントは、一回り(10か9)ぐらい小さいものにすると良いです。 画像にすることによって、さらに、データの流出ができないようにします。 設定をややこしくするために、シートのデータを、コピーして、Shiftキーを押しながら、 メニューの編集-図の貼り付けで、画像のままにして、元のデータは削除してしまってください。なお、その図の書式設定のプロパティは、念のために、「オブジェクトは印刷しない」をオフにします。 計算等はできません。単に閲覧のみです。 次に、マクロが使用可能中に保存はできるのですが、イースターエッグのように、特定の場所に、パスワード(password)をおかないと保存できません。 例:A20, パスワード: 'password' 大文字小文字区別あり 書いたパスワードが消えたら、保存されて、配布できます。 シート名は変更やコピーはできないようにしてあります。 Const PSW = "abc" は、ワークシートと、シート・ウィンドウのロックのパスワード 必ず、VBA Project は、ロックしてください。 'ThisWorkbook モジュール 'プリントを制御するマクロ '最後に、VBAProject をロックして、シート1の適当な場所パスワード設定して、 '保存してください。 Const PSW = "abc" Private Sub Workbook_BeforeClose(Cancel As Boolean) Call ThisWorkbook.PrintControls(True) ThisWorkbook.Saved = True End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 'パスワード設定 If StrComp(Sheet1.Cells(20, 1).Value, "password", vbBinaryCompare) = 0 Then Cancel = False Sheet1.Cells(20, 1).ClearContents Application.GoTo Sheet1.Cells(1, 1) ThisWorkbook.Unprotect Password:=PSW Sheet2.Visible = xlSheetVeryHidden ThisWorkbook.Protect Password:=PSW, Structure:=True, Windows:=True Else Cancel = True End If End Sub Private Sub Workbook_Open() With Sheet2 ThisWorkbook.Unprotect Password:=PSW .Visible = xlSheetVisible .Protect Password:=PSW .EnableSelection = xlNoSelection ThisWorkbook.Protect Password:=PSW, Structure:=True, Windows:=True End With Call ThisWorkbook.PrintControls(False) End Sub Sub PrintControls(flg As Boolean) On Error GoTo Errhandler With Application .CommandBars("Standard").FindControl(, 2521).Enabled = flg '印刷 .CommandBars("Standard").FindControl(, 109).Enabled = flg '印刷プレビュー .CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)").Controls("印刷(&P)...").Enabled = flg '印刷 .CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)").Controls("印刷プレビュー(&V)").Enabled = flg '印刷 End With Exit Sub Errhandler: MsgBox Err.Number & " :" & Err.Description End Sub
その他の回答 (3)
- merlionXX
- ベストアンサー率48% (1930/4007)
> ファイルを開くときに「マクロを無効」にしてしまえば意味がないような気がするのですが・・・・ 逆に発想して、マクロを有効にして開かないと無意味なファイルにしてしまったらどうでしょう? 肝心な部分(印刷させたくないシート)をVeryHiddenで非表示にしておき、代わりのダミーシートを表示させておきます。ワークブックをパスワード付きで保護しておけばマクロ無効で開いた状態では利用できません。 一方で、起動されたマクロの方で保護解除や利用シートの表示などの作業をさせます。 さらに必要な対策は、利用シートが表示された状態で保存できないような対策です。「Workbook_BeforeSave」イベントで初期状態に戻してやります。
お礼
回答ありがとうございます。 >マクロを有効にして開かないと無意味なファイルにしてしまったらどうでしょう? はい、こういった設定方法が知りたかったです^^ お手数ですが具体的な設置方法を教えていただければ助かります。
- gatt_mk
- ベストアンサー率29% (356/1220)
「EXCELのBOOKを印刷禁止」とは内容を確認することはできても、印刷することはできないようにする、という意味でしょうか? Book自体を開けないようにするということなら、Excelファイルにパスワードを設定すればいいだけのような気がしますが。 Excelファイルを開けてしまえば、画面のハードコピーなどいくらでも印刷する手はあります。
お礼
回答ありがとうございます。 >確認することはできても、印刷することはできないようにする、という意味でしょうか? はい、そうです。 >画面のハードコピーなどいくらでも印刷する手はあります。 そうなんですけど、パソコンに詳しくない人たちが利用するのでハードコピーすら知らないかもしれませんので・・
- hana-hana3
- ベストアンサー率31% (4940/15541)
エクセルではどうやっても不可能です。 あとは、PDFにして印刷制限をする程度しか対策は無いと思います。
お礼
回答有り難うございます。 >難しいマクロですね。 お手数をおかけいたしました。 正直、私のレベルを遙かに超えてしまってまして、正直マクロも全く理解できません^^;; せっかく回答いただきましたがうまく使いこなせませんでした。 1さんの言われるように、EXCELでは少し無理があるようですね・・・・ 皆さん有り難うございました。