あなたの習慣について教えてください!!

自宅・学内共に Windows8.1 Enterprise VBA 7.1

自宅のPCでは正常に機能しますが、大学内のPCでは以下の記述で保存のキャンセルが働きません。
原因は環境の違いとしか言いようがないのでしょうか。


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Cancel = True
End Sub


ですが上書き・名前を付けて共に通常通り保存されてしまいます。
Cancelの1行上の空白行にメッセージボックスを表示させる処理を加えると、
それは学内であっても保存の処理直前のタイミングで正常に表示されます。つまりイベント自体は発生します。
記述に誤りが認められる場合、どの部分であるのかご指摘いただけると幸いです。

A 回答 (1件)

何度か、検討して、掲示することにしました。



>原因は環境の違いとしか言いようがないのでしょうか。
その通りだと思います。

学内で使われているコンピュータは、サーバーに繋がれているのではありませんか?そうしたら、全体のMicrosoft Office を含むファイルは、セキュリティ・ソフトで管理されているはずです。そのセキュリテイが、Cancel = True のシグナルを遅らせてしまうように考えました。

その現象は、PCが起動してから、ずっと何度も続くようなら、私の考えは間違っているかもしれません。

>記述に誤りが認められる場合、どの部分であるのかご指摘いただけると幸いです。
掲示されている記述自体に問題はありません。

プロシージャ内に、Wait やSleep(Win32 API)から、一旦、テンポを遅らせる方法を検討してみたらいかがでしょうか。
    • good
    • 0
この回答へのお礼

残念ですが現象はずっと続くもののようでした。質問前に試した際には何時間かかけて何度試行してもうまくいかなかったので一時的なものではないと思います。
助言いただいたwait等はしっかり機能しますが、やはり問題の Cancel = True だけは作動してくれません。

原因不明ということで諦めるしかなさそうです。
回答者さんには私が思う以上にお手数おかけしてしまったようですが、助言を活かせず残念です。
どうもありがとうございました。

お礼日時:2015/07/08 17:07

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

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


おすすめ情報