お世話になります。
XP エクセル2003使用です。
フォルダー内にある複数のすべてのエクセルを開くコードを
下記の解答をそのままコピーして実行しました。
(以下、このエクセルファイルを「実行ファイル.xls」と呼びます)
http://oshiete.goo.ne.jp/qa/2598781.html
(コードは最後尾に転記(※))
問題点は、実行ファイル.xlsから実行した
開きたいエクセルファイルは、
Workbook_Open()で自動実行して、
最後に、ThisWorkbook.Closeで閉じるので、
マクロの実行がループの途中(1回目)で
実行ファイル.xls のコードの実行も終了してしますことです。
(実行ファイル.xls のファイルは開いたままです)
つまり、ThisWorkbook.Closeでエクセルを閉じたときに
マクロの実行までもが終わってしまうので、
実行ファイル.xlsに戻ってきません。
この問題を解決するための方法として
下記2点を調べましたが、力不足で自己解決できません。
---------------------
1
実行ファイル.xls から開きたいエクセルファイルを開く時に
何かしらの命令文または引数を記述しておく。
→ 解決のヒントを見つけることができませんでした。
---------------------
2
実行ファイルをエクセルではなく、VBS(VBScript)で記述する。
この場合、参考にしたコードを、
VBS用に書き換えれば良いと思いますが、
VBSは記述したことがないので、さっぱりです。
方法として間違っていなければ、
できれば、どなた様か当該コードを
VBS用で記述いただけませんでしょうか?
---------------------
一番良い方法が分からないので、
お力添えいただきたいのです。
よろしくお願いします。
---------------------
(※)参考コード
---------------------
Sub OpenAllBooks()
Dim FileName As String
Dim OpenedBook As Workbook
Dim IsBookOpen As Boolean
FileName = Dir("*.xls")
Do While FileName <> ""
If FileName <> ThisWorkbook.Name Then
IsBookOpen = False
For Each OpenedBook In Workbooks
If OpenedBook.Name = FileName Then
IsBookOpen = True
Exit For
End If
Next
If IsBookOpen = False Then
Workbooks.Open (FileName) ←この処理の後に戻ってこれません
End If
End If
FileName = Dir()
Loop
End Sub
No.2ベストアンサー
- 回答日時:
こんにちは。
http://www016.upp.so-net.ne.jp/cheetah/xlvba/Exc … に書いてある方法はどうでしょうか。Application.EnableEvents をFalseにするとイベントプロシージャを無効にできるようです。
参考URL:http://www016.upp.so-net.ne.jp/cheetah/xlvba/Exc …
kotaro2014 さまご解答ありがとうございました。
EnableEventsとブックを閉じるタイミングを変更すればよかったのですね。。。助かりました。
余談ですが、VBSでもなんとか動作をできるまではなんとか仕掛っていたのですが、今度は、VBSからではアドインを立ち上げられないとかで困ってました。いずれ必要となるので、このあたりも解決しておきたかったのですが、意外とネットでもVBSの情報ってすくないですね。備えておきます(^^♪
今後ともよろしくお願いします。
ありがとうございました
No.1
- 回答日時:
> If FileName <> ThisWorkbook.Name Then
があるから、
> Workbooks.Open (FileName) ←この処理の後に戻ってこれません
ここには行かないのでは?
この回答への補足
bin-chan さま 早速のご解答ありがとうございます。
結論からすると、
> Workbooks.Open (FileName) ←この処理の後に戻ってこれません
の処理は実行されています。
最初の
> If FileName <> ThisWorkbook.Name Then
は、
FileName = 開きたいファイル名
ThisWorkbook = この(実行)ファイル
で不平等が成立して、次の
If OpenedBook.Name = FileName Then
の平等が成立せず、End Ifへと渡ります。
そして、If IsBookOpen = False Thenは
先に変数IsBookOpen = Falseが代入されているので、
平等が成立して、Workbooks.Open (FileName)が実行されています。
当方では、このような実行処理状況です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
if(1){...}とはどういうことで...
-
デザイン時のVisible=Falseは実...
-
JSPの処理の途中で、JavaScript...
-
jQuery ui Datepicker 明日以降...
-
innerHTMLなどの反映タイミング
-
C#でボタン名を変更しても動く
-
〔Excel:VBA〕マクロの実行が異...
-
PowerPointで時計表示
-
初心者です。gulpでコンパイル...
-
ラベルの色がかわってくれない
-
Excelのマクロ一括実行ができな...
-
VBの実行シーケンスについて
-
VBA ステータスバー DoEvents
-
resizeToメソッドが動作しません
-
1つのVBAコードをすべてのコア...
-
再帰呼び出しになってしまうの...
-
共通の値をもつ座標の組み合わ...
-
リクエスト結果が一瞬しか表示...
-
既存のwebサイトで、ローカルの...
-
計算結果が毎回違う。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
以下のコードを実行しても、オ...
-
JSPの処理の途中で、JavaScript...
-
if(1){...}とはどういうことで...
-
1つのVBAコードをすべてのコア...
-
VBA ステータスバー DoEvents
-
〔Excel:VBA〕マクロの実行が異...
-
jQuery ui Datepicker 明日以降...
-
デザイン時のVisible=Falseは実...
-
VBA SORT Applyでエラー
-
リクエスト結果が一瞬しか表示...
-
C#でボタン名を変更しても動く
-
PowerPointで時計表示
-
innerHTMLなどの反映タイミング
-
javascriptで最初のところに戻...
-
初心者です。gulpでコンパイル...
-
onbeforeunload と aタグの hre...
-
ラベルの色がかわってくれない
-
エクセル VBA タイマー動作 の...
-
JavaScriptで、実行するたび値...
-
Excel VBA にて JavaScript の...
おすすめ情報