プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります

今、マクロの無いbook.xlsxにマクロコピーして実行させていますが
保存時にはマクロ無しのbook.xlsxとして保存したいのですが

マクロでSave、またはSaveAsでコントロールするには
Application.DisplayAlerts = False でエラー非表示にして問題ないのですが
Excelボタンを押した場合にThisWorkbookに
  Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
  End Sub

としましたが、BeforeSaveの前に
  ・次の機能はマクロなしのブックにに保存できません
       ・
       ・
と出てしまいます

このエラーを消す方法は有るのでしょう?
以上、よろしくお願い申し上げます

質問者からの補足コメント

  • お答えありがとうございます
    さっそく試してみましたが

    .Xlsxのファイルにマクロコピーして実行後、Excelの上書きボタンを押すと
    BeforeSave前に必ず忠告が出るようです
    何とかこの忠告なしで元の.Xlsxにマクロ無しのファイルで保存したいのですが

    名前を付けて保存はうまく行きました

    以上、よろしくお願いいたします

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/10/20 10:41

A 回答 (2件)

DisplayAlerts プロパティは、それが書かれているマクロが終了した時点で、Trueに戻ってしまいます。

よって、実際に保存する時点ではTrueなのでコーションが表示されてしまいます。
コーションが表示されないようにするには、マクロの中で保存までの処理を完結させる必要があります。
具体的には、こんな感じです。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.EnableEvents = False
Application.DisplayAlerts = False
Me.Save
Application.EnableEvents = True
Cancel = True
End Sub
この回答への補足あり
    • good
    • 0
この回答へのお礼

履歴を見たら、お礼をしていませんでした
だいぶ遅れましたが、本当に助かりました
ありがとうございました

お礼日時:2017/03/28 10:07

大変失礼しました。

確かにこの警告はBeforeSaveイベント発生前に表示されてしまうようですね。
ということは、残念ながら、これをマクロで制御することはできないことになります。

ちなみに、何故マクロの無いxlsxにマクロコードをコピーして実行しなければならないのでしょうか。
マクロが書かれているxlsmブックとデータが入っているxlsxブックの2つを開いて、xlsmブックのマクロからxlsxブックを操作することも可能ですよ。
そうすれば、わざわざマクロコードをコピーする必要もないように思うのですが、そうできない事情があるのでしょうか?
    • good
    • 0
この回答へのお礼

ご返事ありがとうございます
マクロでは無理ということであきらめました

ところで疑問の件、多分質問されるだろうなっと思いました
まだ正確に時間を測っていないのでわかないのですが、開発当初にそのように作ったのですが時間がかかるので、コピーして実行させてみたところ意外とスムーズだったので今はこうしています
複雑なプログラムですので、使う人がフラストレーションを起こさないようにと試行錯誤を繰り返している最中です
作業途中で保存キーを押しても、自然な形で.Xlsxができるように考え質問させていただきました

本当にありがとうございました
また、よろしくお願い申し上げます

お礼日時:2016/10/21 09:42

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