• 締切済み

エクセル バグを解決するために 再起動VBA

エクセルでなぜかマクロのボタンが消えてしまうというバグが怒っており、どうしても修正することができないので、ブック自体を保存→もう一度同じのを開くというマクロを組みたいです。しかし、一度close関数?でブックを閉じる命令が出た後にopenの指示を出してもすでに閉じてしまっているブックからの指示を受け取らないようで、うまくいきません。 どなたか解決策を教えていただきたいです。

みんなの回答

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.6

No.5の追加です。 再起動.xlsmから実行する場合 表示タブのマクロを開いて マクロ一覧から直接 Test01.xlsm!Test1 を選択して実行するようにして Test01.xlsmの標準モジュールに Sub Test1() Dim FName As String With ActiveWorkbook FName = .FullName .Close SaveChanges:=True End With Workbooks.Open FName End Sub が簡単かもしれません。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.5

No.4の追加です。 No.4の方法ではなく、別ブック(Test01.xlsmとして)で再起動のコードを実行する場合、再起動したいファイルのフルパスは フルパス取得のコードをTest01.xlsmから実行した場合 再起動したいファイルが「再起動.xlsm」としたとして Workbooks("再起動.xlsm").FullName としてしないと 単純に ActiveWorkbook.FullName としたら Test01.xlsmのフルパスを取得します。 別の方法として ActiveWorkbook.FullNameを使う場合 再起動.xlsmでフルパス取得のコードを実行 再起動.xlsmのコードで Application.Run "Test01.xlsm!Test1" として Test01.xlsmの標準モジュールに Sub Test1() With ActiveWorkbook ThisWorkbook.Sheets("Sheet1").Range("A1").Value = .FullName End With End Sub とすれば「再起動.xlsm」のフルパスをTest01.xlsmのSheet1のA1に代入できます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.4

自分自身を再起動する場合、以下のサイトを参考にしてください。 以下のサイトの方も何か問題があって再起動を望んでいるようですが、回答に補足的に、再起動しなくてはいけない原因対策をした方がいいのではという事も記載されています。エクセルのバグでしたらどうしようもない可能性がありますが、元の問題を抱えたまま先に進まないほうがいいのではという気もします。 エクセル マクロ ファイルの再起動 https://okwave.jp/qa/q8147724.html VBAで自分自身のブックを再起動させたいです https://teratail.com/questions/99467

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

>ブックのフルパスを入手する方法がわかりません VBAを使いBOOKを開く場合、多くの場合、フルパスを指定して開きます。 開いたブックを加工して保存し、改めて開きなおしたいとのことであれば、 そもそもフルパスを指定して開いているわけですから わからないことはないと思いますがいかがでしょうか。 もし、いま開いている(アクティブな)ブックのフルパスを得たいということであれば Sub abc() Dim MyPath As String With Application.ActiveWorkbook MyPath = .Path & "\" & .Name End With MsgBox MyPath End Sub といったコードで取得できます。 なお, >エクセルでなぜかマクロのボタンが消えてしまうというバグ この現象を再現できるサンプルコードを提示すれば 多くの方が評価や動作確認をしてくれるのではないかと思います。

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.2

回答No.1さまの言われるようなファイルを作っておいて、 オプションの詳細設定の「起動時にすべてのファイルを開くフォルダー」を設定してそこにそのファイルを置いておくか、 アドインとして作成して登録しておくと、 エクセルを起動すると自動的に開いてくれるので、 いつでもそのマクロを実行できます。

回答No.1

対象book以外にマクロを含んだブックを作成して、 モジュール上に対象のbookを閉じたり、開いたりする コードを書けばいいだけです。 (モジュールでなければ動かないわけではないですが、  ここはとにかくモジュールに記載して下さい)

yamahb
質問者

補足

そのバグが起こるファイルが複数あり、ブックのフルパスを入手する方法がわかりません…。フルパスさえ入手できれば、バグブックを保存→バグブックを閉じる&開くというコードをかけると思うのですが…。よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう