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

皆さんのお知恵を貸してください。

タイトルのとおり「EXCELのBOOKを印刷禁止」にしたいのですがその方法がわかりません。過去ログを探してみると、「マクロ」を利用した方法があるのですが、ファイルを開くときに「マクロを無効」にしてしまえば意味がないような気がするのですが・・・・

参考:http://oshiete1.goo.ne.jp/kotaeru.php3?q=103296

マクロを無効にしてしまえばシートが開けないとか、若しくは全く違う方法で印刷禁止に出来れば嬉しいです。

ちなみに EXCEL2003 でOSはXP proです。

よろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

回答有り難うございます。

>難しいマクロですね。
お手数をおかけいたしました。

正直、私のレベルを遙かに超えてしまってまして、正直マクロも全く理解できません^^;;

せっかく回答いただきましたがうまく使いこなせませんでした。

1さんの言われるように、EXCELでは少し無理があるようですね・・・・

皆さん有り難うございました。

お礼日時:2007/04/13 08:36

> ファイルを開くときに「マクロを無効」にしてしまえば意味がないような気がするのですが・・・・



逆に発想して、マクロを有効にして開かないと無意味なファイルにしてしまったらどうでしょう?
肝心な部分(印刷させたくないシート)をVeryHiddenで非表示にしておき、代わりのダミーシートを表示させておきます。ワークブックをパスワード付きで保護しておけばマクロ無効で開いた状態では利用できません。 一方で、起動されたマクロの方で保護解除や利用シートの表示などの作業をさせます。

さらに必要な対策は、利用シートが表示された状態で保存できないような対策です。「Workbook_BeforeSave」イベントで初期状態に戻してやります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>マクロを有効にして開かないと無意味なファイルにしてしまったらどうでしょう?
はい、こういった設定方法が知りたかったです^^

お手数ですが具体的な設置方法を教えていただければ助かります。

お礼日時:2007/04/12 13:45

「EXCELのBOOKを印刷禁止」とは内容を確認することはできても、印刷することはできないようにする、という意味でしょうか?


Book自体を開けないようにするということなら、Excelファイルにパスワードを設定すればいいだけのような気がしますが。
Excelファイルを開けてしまえば、画面のハードコピーなどいくらでも印刷する手はあります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>確認することはできても、印刷することはできないようにする、という意味でしょうか?
はい、そうです。
>画面のハードコピーなどいくらでも印刷する手はあります。
そうなんですけど、パソコンに詳しくない人たちが利用するのでハードコピーすら知らないかもしれませんので・・

お礼日時:2007/04/12 13:43

エクセルではどうやっても不可能です。


あとは、PDFにして印刷制限をする程度しか対策は無いと思います。
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています