2014.
04.
12
20:12:36
結論から書けば、Visual Basic Editorを起動して
とか書けばOKです。
それでは細かく見ていきましょう。
きっかけは、とあるお客さまでした。
あのさ~、Excelでいちいち「変更を保存しますか?」とか聞いてくるのウザいんだけど。
わざわざ変更してるんだから保存するに決まってんだろ。
書いてある内容を!
書いてある通りに!
そのまま保存しろ!
とか思わない?思うよね?思うだろ?
と言われちゃいましてね。
Microsoftの技術者の方々の心の叫びが聞こえてくる気もしますが、
そこはほれ、私もお金をくれる人には媚びへつらうわけですよ。
ですよね~。面倒くさいですよね~(人´∀`)
と、お追従を言ったあとに、さて、どーやって対応する(--?と困ったわけです。
困ったときのGoogle先生、教えてくれたまえ( ̄^ ̄)ノ
ふむふむ(--)
1.Excelを開きます
2.Alt+F11キーを押してVisual Basic Editorを起動します
3.上のメニューのところで「挿入(I)」→「標準モジュール(M)」を押します。
4.「Module1」とかなっている奴に以下のコードを追加します
5.名前を付けて保存をします
これでブックを閉じるときに自動的に上書き保存できるのだそーな。
「Auto_Close()」は「ブックを閉じる直前に動きますよ」なイベントです。
このタイミングで人間様の代わりにマクロさんが上書き保存しちゃってるわけです。
閉じる直前に上書き保存しちゃうので、実際に閉じるタイミングでは何も確認が出ません。
ちょっと違いますが、何も変更しないで閉じたときと同じような扱いになります。
このコードが埋め込まれたブックは次回から確認無しで上書き保存されますよ。
ちなみに「全部のブックにいちいちマクロを埋め込むのは面倒くさいんだけど?」な人は
ExcelVBA、マクロをすべてのブックに適用する
の記事をご覧ください。
すべてのブックに一括反映させることができます。
あっ、そうそう。
余談ですが、閉じるときに強制的に変更内容を「破棄」したい場合は
とすればOKです。
「ThisWorkbook.Saved」は「変更したの保存した?」なプロパティです。
こいつを強制的に上書きして、保存していないのに「保存?したした!」と誤魔化しています。
そんな感じ\(--)/
Sub Auto_Close()
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If
End Sub
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If
End Sub
とか書けばOKです。
それでは細かく見ていきましょう。
きっかけは、とあるお客さまでした。
あのさ~、Excelでいちいち「変更を保存しますか?」とか聞いてくるのウザいんだけど。
わざわざ変更してるんだから保存するに決まってんだろ。
書いてある内容を!
書いてある通りに!
そのまま保存しろ!
とか思わない?思うよね?思うだろ?
と言われちゃいましてね。
Microsoftの技術者の方々の心の叫びが聞こえてくる気もしますが、
そこはほれ、私もお金をくれる人には媚びへつらうわけですよ。
ですよね~。面倒くさいですよね~(人´∀`)
と、お追従を言ったあとに、さて、どーやって対応する(--?と困ったわけです。
困ったときのGoogle先生、教えてくれたまえ( ̄^ ̄)ノ
ふむふむ(--)
1.Excelを開きます
2.Alt+F11キーを押してVisual Basic Editorを起動します
3.上のメニューのところで「挿入(I)」→「標準モジュール(M)」を押します。
4.「Module1」とかなっている奴に以下のコードを追加します
Sub Auto_Close()
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If
End Sub
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If
End Sub
5.名前を付けて保存をします
これでブックを閉じるときに自動的に上書き保存できるのだそーな。
「Auto_Close()」は「ブックを閉じる直前に動きますよ」なイベントです。
このタイミングで人間様の代わりにマクロさんが上書き保存しちゃってるわけです。
閉じる直前に上書き保存しちゃうので、実際に閉じるタイミングでは何も確認が出ません。
ちょっと違いますが、何も変更しないで閉じたときと同じような扱いになります。
このコードが埋め込まれたブックは次回から確認無しで上書き保存されますよ。
ちなみに「全部のブックにいちいちマクロを埋め込むのは面倒くさいんだけど?」な人は
ExcelVBA、マクロをすべてのブックに適用する
の記事をご覧ください。
すべてのブックに一括反映させることができます。
あっ、そうそう。
余談ですが、閉じるときに強制的に変更内容を「破棄」したい場合は
Sub Auto_Close()
ThisWorkbook.Saved = True
End Sub
ThisWorkbook.Saved = True
End Sub
とすればOKです。
「ThisWorkbook.Saved」は「変更したの保存した?」なプロパティです。
こいつを強制的に上書きして、保存していないのに「保存?したした!」と誤魔化しています。
そんな感じ\(--)/