質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

2296閲覧

PCがシャットダウン/再起動する時にエクセルファイルを自動保存できるか

kuronokurujp

総合スコア15

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

1グッド

1クリップ

投稿2017/08/16 05:29

みなさんこんにちは
現在エクセルのVBAを使用してツールを作成しています。
このツールですが、自動実行します。

問題なのですが、windowsupdateで再起動する時にエクセルファイルが保存されないので、自動実行中にセル入力した内容が消えてしまいます。

解決案の1つとしてはwindowsupdateの自動をoffにすればいいと思います。

それ以外の解決としては再起動時にエクセルファイルを保存する方法がないか調査をしています。

シャットダウンや再起動したら、
イベント「Workbook_BeforeClose」が呼び出すのかと考え、このイベント内で保存処理を実装しましたが、呼ばれないようで保存ができませんでした。

シャットダウン・再起動時にエクセルファイルを自動保存する方法があれば教えてください。
よろしくお願いいたします。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

標準モジュールに下記のコードを記述しておくと、シャットダウンなどで終了される場合でも、保存できます。

Sub Auto_Close() If ThisWorkbook.Saved = False Then ThisWorkbook.Save End If End Sub

投稿2017/08/16 08:16

編集2017/08/22 18:41
hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuronokurujp

2017/08/16 12:43

hatena19さん ありがとうございます。 回答通りに対応したらシャットダウンでの強制終了した場合でも保存できました。 補足ですが、シャットダウンした後に表示する画面で「強制的にシャットダウン」のボタンを押すと保存はする事なくシャットダウンしました。 ボタンを押す事なく、一定時間待っていると保存が実行されシャットダウンしました。
hatena19

2017/08/17 04:37

「強制的にシャットダウン」まで対応するのみ難しいかと。 あと、OSフリーズとか、タスクマネージャーでの強制終了でも対応は難しいでしょう。 そこまで、厳密性をもとめるなら、 VBAで自動更新しているなら、更新するたびに保存するということで対応することになるでしょう。
kuronokurujp

2017/08/17 04:39

ご返答ありがとうございます。 強制終了での対応は現在必要ないので大丈夫です。
otn

2017/08/22 06:25

「強制的にシャットダウン」は、稼働中のプロセスに対して、プログラムで行う終了時処理を行わずに、OS管理上からプロセスを消すという意味なので、Excelに限らず終了時処理が行われません。 作業中のメモリが無条件に捨てられるのはもちろん、不要な作業ファイルが残ったり、共有メモリにゴミが残ったり(どうせOSが落ちるので関係ないですが)します。
guest

0

「自動実行中にセル入力した内容が消えてしまいます。」とありますが、
定周期で分単位であれば、データを書き込みしたときにブックを保存してしまえば良いし、
コードが書けるのであれば、シート上のセルに書き込みしないで、テキストファイルに追記していけばよいでしょうし。

そもそも論ですが、EXCELは、無人自動運用は非推奨です。

古くはVB4/5/6でも、今でもWindowsフォームプロジェクトで、
C#/VB.NETでも Shutdown イベントで Window.Close イベントが発生します。
Window Close の要因も取得できます。
どうしてもEXCELに拘るのであれば、VSTOで、Shutdown イベントを拾う方法で、間に合うかどうか。かも。

EXCELは、セル入力中、ダイアログ応答待ち中、その他にもEXCELオートメーションが
動作しない事があります。
⇒セル自動記入のVBAが走って、セルへの書き込みを行っているのであれば、
ブック保存のダイアログが出ていて、Closeイベントが走っていない可能性があります。

投稿2017/08/16 05:54

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

WIN32 API のイベントループでも書かない限り難しいと思います。代替え案ですが

vba

1Application.OnTime Now + TimeValue("00:00:15"), "MySaveFile"

タイマーを発行して定期的に保存するのはどうでしょうか。ファイルの保存処理を書いた MySaveFile の最後で再度このタイマー登録を行えば15秒毎にファイルが保存されます。

投稿2017/08/16 05:36

編集2017/08/16 05:51
mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問