Excel マクロ ファイルオープン時 自動実行
いつもありがとうございます。初心者につき、わかりにくい文章かもしれませんが、宜しくお願い致します。
Excel2003で改ページを自動で行うマクロをこちらの過去の質問を参考にしながら作成しました。
勤め先の同僚にも配布しようと思い、どうせならマクロ実行が簡単なようにと、ユーザー定義のツールバー作成のマクロも作成。ここまでは無事に出来たのでが・・・
さらにファイルを開いた時に自動でツールバーが作成マクロを実行するように Sub Auto_Open()を用いて無事に成功、しかし一旦終了して再度このファイルを開くと
実行時エラー ’5’:
プロシージャの呼び出し、または引数が不正です。
というエラーが出てしまいます。一回目に開いた時にSub Auto_Open()によって作成したツールバー作成のマクロを再度実行しようとするのが原因だと思うのですが、これを回避する方法があるのでしょうか?
ちなみにエラーのダイヤログの終了ボタンを押せば、他のマクロは問題なく作動しますし、
本来の目的は別ファイルの改ページを、自動に行うためのマクロの実行をツールバーにて簡単に行うためのもので、このエラーが出たからといって何ら支障は無く、他のファイルからこの改ページのマクロを実行してもエラーは出ず、本来の目的は達成しおり問題は無いのですが、気分的にスッキリしません。何卒宜しくお願い致します。
下記をご参照ください。(実際は改頁マクロは複数あり)
Sub A改ページ()
Dim PB As HPageBreak
Dim idx As Long
Const tCol As String = "A" '改頁判断する列
With ActiveSheet
For idx = 3 To .Cells(65536, tCol).End(xlUp).Row
If .Cells(idx, tCol) <> .Cells(idx - 1, tCol) Then
ActiveSheet.HPageBreaks.Add Before:=.Cells(idx, tCol)
End If
Next idx
End With
End Sub
Sub ツールバー作成()
Dim myBar As CommandBar, myButton As CommandBarButton
Set myBar = CommandBars.Add
myBar.Name = "改頁マクロ"
Set myButton = myBar.Controls.Add
myButton.OnAction = "A改ページ"
myButton.FaceId = 80
myBar.Visible = True
End Sub
Sub Auto_Open()
ツールバー作成
End Sub
お礼
早速のご回答ありがとうございます。 そして、お礼が遅れてしまってすみません。 質問が言葉足らずで申し訳ないです。 保存する前に実行するマクロが知りたかったので、お答えはドンピシャです。 ただ、上手く動いてくれません。 例えば保存する前にセルC1に「=A1+B1」と言う式を入れてから 保存したい場合は、以下では駄目なのでしょうか? Sub BeforeSave() Cells(1, 3) = "=A1+B1" End Sub
補足
質問者です。 回答へのお礼で再質問させて頂いてから、 BeforeSaveをキーに色々検索して解決できました。 Moduleに書き込むのではなく ThisWorkbookに以下の様に書き込んで上手く動きました。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Cells(1, 3) = "=A1+B1" End Sub お騒がせしました、ありがとうございました。