2014.
04.
12
21:08:56
結論から書けば、マクロを書いたブックを用意して
メニューの「表示」の中に(多分)ある「表示しない」を押して
の名前で
に保存すればOKです。
PERSONAL.XLSB(もしくはPERSONAL.XLS)の中のマクロがすべてのブックに反映されます。
きっかけは
ExcelVBA、ブックを閉じるときに自動的に上書き保存する
の記事でした。
ブックを自動保存するマクロを作ったのですが、いちいち個別のブックに埋め込むのは面倒でですね。
すべてのブックに一括で反映したかったのです。
そんなことできるのかな~(--?と思ったのですが、できました。
まずは
もしくは
という名前のExcelファイルを用意します。
※以降「PERSONAL.XLSB」として説明しますが「PERSONAL.XLS」も同じです。
次に、PERSONAL.XLSBの中にお好きなマクロを記述します。
その後、Excelメニューの「表示」の中に(多分)ある「表示しない」を押して
シートを非表示にしちゃいます。
あとは保存して
に放り込みます。
そうすると、このPERSONAL.XLSBに埋め込んだマクロがすべてのブックに反映されるのです。
ちなみにPERSONAL.XLSBに保存するマクロ内で「ThisWorkbook」を使っている場合はご注意ください。
「ThisWorkbook」は「PERSONAL.XLSB」を指します。
例えばブックを閉じるときに強制的に上書き保存する
なコードを埋め込んだとします。
普通のブックに埋め込むときはこれでOKです。
ですがPERSONAL.XLSBに埋め込むときは、このままでは期待通りの動作をしません。
「ThisWorkbook」を「ActiveWorkbook」に変えて
のようにしてあげる必要があります。
ExcelVBA、ブックを閉じるときに自動的に上書き保存する
の記事からの繋がりで書いたので「ThisWorkbook」を例に出しましたが、
他にも同じようなのが恐らくあるでしょう。
マクロをPERSONAL.XLSBに移植する際は動作確認を頑張ってくださいね。
ってなところで、マクロをすべてのブックに適用するやり方の説明、完了\(--)/
メニューの「表示」の中に(多分)ある「表示しない」を押して
PERSONAL.XLSB(もしくはPERSONAL.XLS)
の名前で
C:\Users\【ユーザ名】\AppData\Roaming\Microsoft\Excel\XLSTART
に保存すればOKです。
PERSONAL.XLSB(もしくはPERSONAL.XLS)の中のマクロがすべてのブックに反映されます。
きっかけは
ExcelVBA、ブックを閉じるときに自動的に上書き保存する
の記事でした。
ブックを自動保存するマクロを作ったのですが、いちいち個別のブックに埋め込むのは面倒でですね。
すべてのブックに一括で反映したかったのです。
そんなことできるのかな~(--?と思ったのですが、できました。
まずは
PERSONAL.XLSB
もしくは
PERSONAL.XLS
という名前のExcelファイルを用意します。
※以降「PERSONAL.XLSB」として説明しますが「PERSONAL.XLS」も同じです。
次に、PERSONAL.XLSBの中にお好きなマクロを記述します。
その後、Excelメニューの「表示」の中に(多分)ある「表示しない」を押して
シートを非表示にしちゃいます。
あとは保存して
C:\Users\【ユーザ名】\AppData\Roaming\Microsoft\Excel\XLSTART
に放り込みます。
そうすると、このPERSONAL.XLSBに埋め込んだマクロがすべてのブックに反映されるのです。
ちなみにPERSONAL.XLSBに保存するマクロ内で「ThisWorkbook」を使っている場合はご注意ください。
「ThisWorkbook」は「PERSONAL.XLSB」を指します。
例えばブックを閉じるときに強制的に上書き保存する
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です。
ですがPERSONAL.XLSBに埋め込むときは、このままでは期待通りの動作をしません。
「ThisWorkbook」を「ActiveWorkbook」に変えて
Sub Auto_Close()
If ActiveWorkbook.Saved = False Then
ActiveWorkbook.Save
End If
End Sub
If ActiveWorkbook.Saved = False Then
ActiveWorkbook.Save
End If
End Sub
のようにしてあげる必要があります。
ExcelVBA、ブックを閉じるときに自動的に上書き保存する
の記事からの繋がりで書いたので「ThisWorkbook」を例に出しましたが、
他にも同じようなのが恐らくあるでしょう。
マクロをPERSONAL.XLSBに移植する際は動作確認を頑張ってくださいね。
ってなところで、マクロをすべてのブックに適用するやり方の説明、完了\(--)/