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

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

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

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

Q&A

解決済

2回答

8578閲覧

VBA ブックを閉じたタイミングで次のブックを開く方法

future

総合スコア62

VBA

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

0グッド

0クリップ

投稿2017/05/31 00:53

セルにはExcelのファイルパスが入力されています。
それらのファイルをVBAを使用して順番に開きたいと考えています。

ブックを開いている間はループ処理を一時停止し、
そのブックが閉じられたときに処理を再開することは可能でしょうか?

lang

1For var = 1 To 10 2 3 path = Cells(var, 1).Value // セルのファイルパスを取得 4 Workbooks.Open path // ブックを開く 5 6 // ブックを開いている間は処理を一時停止したい 7 8 // そしてブックが閉じられたときに処理を再開したい 9 10Next

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

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

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

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

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

guest

回答2

0

ベストアンサー

EXCEL VBA には、EXCELの操作、ワークブック操作によって、
VBA の変数がクリアされる、EXCEL VBA リセット問題があります。
よって、VBAによる、ループ実行中に、
開いたブックの操作を行うと、VBAがリセットされる可能性が発生します。

じゃあどうするか?
1.イベント駆動型プログラミングモデルを学習する。
⇒EXCEL VBA はイベント駆動型プログラミングモデルを採用しています。
2.開始、再開、終了 のボタンを設けて、考える方が、プログラムが簡単です。
3分割した各々機能を完成させた後に、どことどこを統合するかを、考えます。
3.VBA実行中の変数(今回の場合はループカウンタ)の退避は、シート上へ変数を一時保存する事で行います。

投稿2017/05/31 01:16

編集2017/05/31 01:28
daive

総合スコア2028

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

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

0

具体的なコードに関しては分かりませんが方針はこんな感じかと

・プロシージャAの途中でBを実行
→F1を押すとブックを閉じ、元のブックに戻る
・F1が押されるまで、Aの処理は待機

1、プロシージャAにおける処理をBを呼び出す前と、Bから制御が戻ってきた後を想定した処理とに分割します。分割後の制御が戻ってきた場合の処理を仮にA2とします。
2、Bを呼び出したらプロシージャAでの処理は終了して、F1を押したらA2を呼ぶようにコードを修正します。

投稿2017/05/31 01:02

_Victorique__

総合スコア1392

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問