![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
皆さんのお知恵を貸してください。
タイトルのとおり「EXCELのBOOKを印刷禁止」にしたいのですがその方法がわかりません。過去ログを探してみると、「マクロ」を利用した方法があるのですが、ファイルを開くときに「マクロを無効」にしてしまえば意味がないような気がするのですが・・・・
参考:http://oshiete1.goo.ne.jp/kotaeru.php3?q=103296
マクロを無効にしてしまえばシートが開けないとか、若しくは全く違う方法で印刷禁止に出来れば嬉しいです。
ちなみに EXCEL2003 でOSはXP proです。
よろしくお願いします。
No.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
回答有り難うございます。
>難しいマクロですね。
お手数をおかけいたしました。
正直、私のレベルを遙かに超えてしまってまして、正直マクロも全く理解できません^^;;
せっかく回答いただきましたがうまく使いこなせませんでした。
1さんの言われるように、EXCELでは少し無理があるようですね・・・・
皆さん有り難うございました。
No.3
- 回答日時:
> ファイルを開くときに「マクロを無効」にしてしまえば意味がないような気がするのですが・・・・
逆に発想して、マクロを有効にして開かないと無意味なファイルにしてしまったらどうでしょう?
肝心な部分(印刷させたくないシート)をVeryHiddenで非表示にしておき、代わりのダミーシートを表示させておきます。ワークブックをパスワード付きで保護しておけばマクロ無効で開いた状態では利用できません。 一方で、起動されたマクロの方で保護解除や利用シートの表示などの作業をさせます。
さらに必要な対策は、利用シートが表示された状態で保存できないような対策です。「Workbook_BeforeSave」イベントで初期状態に戻してやります。
回答ありがとうございます。
>マクロを有効にして開かないと無意味なファイルにしてしまったらどうでしょう?
はい、こういった設定方法が知りたかったです^^
お手数ですが具体的な設置方法を教えていただければ助かります。
No.2
- 回答日時:
「EXCELのBOOKを印刷禁止」とは内容を確認することはできても、印刷することはできないようにする、という意味でしょうか?
Book自体を開けないようにするということなら、Excelファイルにパスワードを設定すればいいだけのような気がしますが。
Excelファイルを開けてしまえば、画面のハードコピーなどいくらでも印刷する手はあります。
回答ありがとうございます。
>確認することはできても、印刷することはできないようにする、という意味でしょうか?
はい、そうです。
>画面のハードコピーなどいくらでも印刷する手はあります。
そうなんですけど、パソコンに詳しくない人たちが利用するのでハードコピーすら知らないかもしれませんので・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- その他(Microsoft Office) Excelのマクロについて教えてください。 1 2022/03/25 10:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) 【Excel】複数シートがあるエクセルデータで片面印刷と両面印刷設定がシートごとに入 1 2023/03/10 15:25
- Excel(エクセル) excelのマクロ実行でブロックされます。 2 2022/06/08 09:14
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Excel(エクセル) セルによって印刷するシートを変える方法 EXCEL-VBA 2 2022/08/01 20:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Excelのシートを印刷不可(禁止)にするにはどうしたら?
Excel(エクセル)
-
Excel 特定のシートを印刷不可にする方法
Excel(エクセル)
-
エクセルの特定シート(複数)を印刷不可にするVBA
Excel(エクセル)
-
-
4
機密文書を印刷できなくするには
Excel(エクセル)
-
5
エクセルマクロを有効にしないとファイルが開けないようにする方法
Excel(エクセル)
-
6
エクセル 印刷設定の変更禁止
Excel(エクセル)
-
7
【至急】エクセルで、印刷にだけパスワードをかけたい
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルを開く時、常...
-
エクセルの一部のセルの背景色...
-
エクセルで複数のシートの1枚目...
-
Excel 特定のシートを印刷不可...
-
エクセル印刷時 一枚の書類に...
-
エクセルの行タイトルを特定の...
-
エクセルのマクロで複数シート...
-
エクセルで行番号、列アルファ...
-
【Excel】複数シートがあるエク...
-
条件によって印刷するシートを...
-
マクロで印刷→セルの値から部数...
-
エクセルでのヘッダーをページ...
-
Excelシートのヘッダー編集禁止
-
1ヶ月分の日付を一度に出す方法...
-
特定のセルに数値が入っている...
-
エクセルで複数のシートを同じ...
-
エクセルの複数シートをNアップ...
-
エクセルのシート名を印刷した...
-
Excelであるシートだけ印刷でき...
-
エクセルVBAで日報自動印刷
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルを開く時、常...
-
エクセルの一部のセルの背景色...
-
エクセル印刷時 一枚の書類に...
-
マクロで印刷→セルの値から部数...
-
エクセルで複数のシートの1枚目...
-
Excel 特定のシートを印刷不可...
-
1ヶ月分の日付を一度に出す方法...
-
エクセルの行タイトルを特定の...
-
エクセルで行番号、列アルファ...
-
エクセルでのヘッダーをページ...
-
エクセルのマクロで複数シート...
-
エクセルでシートの色がグレー...
-
エクセルで複数のシートを同じ...
-
【Excel】複数シートがあるエク...
-
エクセルのシート名を印刷した...
-
条件によって印刷するシートを...
-
エクセルのページ設定を他のペ...
-
Excel 2シートを1枚に印刷した...
-
エクセルで、ヘッダーに他のシ...
-
特定のシートのみ印刷できない...
おすすめ情報