Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


829 / 13645 ツリー ←次へ | 前へ→

【78075】ブックの複製禁止 gg57 16/3/31(木) 17:59 質問[未読]
【78076】Re:ブックの複製禁止 β 16/3/31(木) 18:48 発言[未読]
【78078】Re:ブックの複製禁止 gg57 16/4/1(金) 7:24 発言[未読]
【78077】Re:ブックの複製禁止 β 16/3/31(木) 18:59 発言[未読]
【78079】Re:ブックの複製禁止 gg57 16/4/1(金) 7:29 発言[未読]
【78080】Re:ブックの複製禁止 γ 16/4/1(金) 7:45 発言[未読]
【78081】Re:ブックの複製禁止 gg57 16/4/1(金) 10:55 お礼[未読]
【78088】Re:ブックの複製禁止 γ 16/4/2(土) 8:34 発言[未読]

【78075】ブックの複製禁止
質問  gg57  - 16/3/31(木) 17:59 -

引用なし
パスワード
   ブックの複製を禁止したいのです(EXCEL2013)。
(1)読み取りパスワードを設定している。"読み取りを推奨する"を設定している。
→読み取り専用で開いている。
(2)ファイル属性を"読み取り専用"に設定している。
(3)"名前を付けて保存"はVBAにて保存禁止としている。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
  MsgBox ("このファイルは名前を付けて保存できません")
  Cancel = True
  Application.Quit
  Application.DisplayAlerts = False
End If
End Sub

上記1〜3の条件の場合でも
×でブックを直接閉じようとすると
保存を確認するメッセージが表示され,保存ボタンを押すと
ブック名に"コピー"がついて保存ができてしまいます。

ブックを直接閉じても保存させないようにしたいのですが
上記コードをみて下記コードを試してみましたがだめでした。
****************************************************************
!コンパイルエラー:
  プロシージャの宣言が、イベントまたはプロシージャの定義と
  一致していません。
****************************************************************
Private Sub Workbook_BeforeClose(ByVal Cancel As Boolean)
 Application.Quit
 Application.DisplayAlerts = False
End Sub

訂正すべきところをお教えください。

【78076】Re:ブックの複製禁止
発言  β  - 16/3/31(木) 18:48 -

引用なし
パスワード
   ▼gg57 さん:

水を差すわけではありませんが、どんな構えをとったとしても
マクロ無効で開かれてしまえば、何も制御ができませんし
また、誰でも簡単にエクスプローラでファイルコピーできますし、
VBAを書くことができる人は、ファイルコピーのコードを書いて、
さくっとコピーしてしまいますよ、

【78077】Re:ブックの複製禁止
発言  β  - 16/3/31(木) 18:59 -

引用なし
パスワード
     ▼gg57 さん:

私の見解は、コメントした通りですが

Private Sub Workbook_BeforeClose(ByVal Cancel As Boolean)

なぜ、ByVal を指定したのですか?



【78078】Re:ブックの複製禁止
発言  gg57  - 16/4/1(金) 7:24 -

引用なし
パスワード
   βさま
悪意のある操作に対応する質問ではありません。

>ブックを直接閉じても保存させないようにしたいのですが

読み取り専用でファイルを開いている(コピーできないと思って作業している)作業者の単純操作による混乱を防ぎたいというだけの話です。

【78079】Re:ブックの複製禁止
発言  gg57  - 16/4/1(金) 7:29 -

引用なし
パスワード
   初心者であるからです。

>上記コードをみて下記コードを試してみましたが

"もっと自分で調べて上級者になってから質問して来い"
と言われるならそうします。

初心者には敷居の高い質問サイトのようですね。

失礼いたしました。

【78080】Re:ブックの複製禁止
発言  γ  - 16/4/1(金) 7:45 -

引用なし
パスワード
   ▼gg57 さん:
>初心者であるからです。
>
>>上記コードをみて下記コードを試してみましたが
>
>"もっと自分で調べて上級者になってから質問して来い"
>と言われるならそうします。
>
>初心者には敷居の高い質問サイトのようですね。
>
>失礼いたしました。

おっしゃる意味がわかりかねますね。
普通、イベントプロシージャの引数はさわらないとしたものですが、
なぜ変更したのか、特別の意図があるのですか?
とβさんは単に質問しただけなのに、
初心者がどうのこうの、と言い出す意味がわかりません。
もう少し、フラットな気持ちで質問された方がよいと思いますよ。
不明な点を尋ねる、知っている方がコメントする。
それだけのことではないですか?

【78081】Re:ブックの複製禁止
お礼  gg57  - 16/4/1(金) 10:55 -

引用なし
パスワード
   γさま
 >不明な点を尋ねる、知っている方がコメントする。
 >それだけのことではないですか?
確かにおっしゃるとおりです。

質問に対し
 >水を差すわけではありませんが
との的を外れた返信を頂き、
 >訂正すべきところをお教えください。
に対して
 >私の見解は、コメントした通りですが
 >なぜ、ByVal を指定したのですか?
との(私にしてみれば)再び的外れと感じた返信を頂いたので
言葉が過ぎた返信をいたしました。

γさまの
 >普通、イベントプロシージャの引数はさわらないとしたものですが、
のような単純かつ適切な回答がいただきたかっただけです。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Cancel = False
 Application.DisplayAlerts = False
 Application.Quit
 Application.DisplayAlerts = True
End Sub

で解決いたしました。
ありがとうございました。

【78088】Re:ブックの複製禁止
発言  γ  - 16/4/2(土) 8:34 -

引用なし
パスワード
   解決したようで、何よりです。

>質問に対し
> >水を差すわけではありませんが
>との的を外れた返信を頂き、
> >訂正すべきところをお教えください。
>に対して
> >私の見解は、コメントした通りですが
> >なぜ、ByVal を指定したのですか?
>との(私にしてみれば)再び的外れと感じた返信を頂いたので
>言葉が過ぎた返信をいたしました。

少しも的外れではないと思いますよ。
>プロシージャの宣言が、イベントまたはプロシージャの定義と
>  一致していません。
というエラーメッセージをキチンと読んでいれば、
なぜ、ByVal を指定したのですか?
という確認の意味を理解できるはずですね。

また、水を差すようですが、ということでの指摘も、
より広い範囲での留意点を述べられたもので、
これも参考として受け止めて欲しい有益な指摘だったと思います。
色々な視点からの指摘も活かせるような受け答えを勉強されると、
よろしいかと老婆心ながら思いました。
頑張ってくださいね。

829 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free