[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フォルダ内の全エクセルファイルを実行するマクロについて』(hiro)
今、フォルダ内に三十数個のエクセルファイルがあります。
全て同じマクロ名を実行させたいのですができますでしょうか?
今はファイル一つ開いて、マクロからマクロ名を選び実効させてます。
マクロ名は12個あり、その内の一つのマクロ名だけ選んで
全ファイル同じ処理をします。
よろしくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows7 >
ご参考に
(Q::) 2017/12/07(木) 12:41
(hiro) 2017/12/07(木) 12:50
あと、次々にブックを開いてブックを開くより、1つのブックにマクロを書いて、このマクロが他ブックを対象に処理する、という形の方が良いと思いますよ。 現行の方法だと、マクロに何か変更を加える場合、全ブックのマクロを書き換えないといけませんから。
(???) 2017/12/07(木) 16:35
End Sub これを書き換えて、12個のマクロの中に入れようと中身を解読中です。 よろしくお願いします。
(hiro) 2017/12/07(木) 16:46
Dim FolderName1 As String
Dim FolderName2 As String Dim FileName As String FolderName1 = “C:\処理前\” FolderName2 = “C:\処理後\” If FolderName1 = “False” Then Exit Sub End If FileName = Dir(FolderName1 & “*xls*”) Do While FileName <> “” Workbooks.Open FileName
Workbooks(Workbooks.Count).SaveAs FolderName2 & FileName
Workbooks(Workbooks.Count).Close FileName = Dir() Loop End Sub
これでマクロ名 Macro11() を実行した時、C:\処理前\フォルダ内の全てのエクセルファイルが実効されますでしょうか?何分、Loop関数があるので、間違えると無限ループに入ってPCが反応しなくなるかも知れないので先に問い合わせてみました。
よろしくお願いします。
(hiro) 2017/12/07(木) 17:22
この間に文字を入れてたのですが、消えて直線だけになってしまったので再度記入しますと
この中に Macro11() の記述を差しこみする予定です。
Workbooks(Workbooks.Count).SaveAs FolderName2 & FileName
これでマクロ名 Macro11() を実行した時、C:\処理前\フォルダ内の全てのエクセルファイルが実効されますでしょうか?何分、Loop関数があるので、間違えると無限ループに入ってPCが反応しなくなるかも知れないので先に問い合わせてみました。
よろしくお願いします。
(hiro) 2017/12/07(木) 17:27
(hiro) 2017/12/07(木) 17:35
あと、このままでも動くでしょうけど、Workbooks(Workbooks.Count)を SaveAs とかはあまり好ましくないです。以下のようにするのが一般的と思います。
Dim wk As Workbook 'この行だけはDoループより前に書く
Set wk = Workbooks.Open(FolderName1 & FileName) Application.Run wk.Name & "!" & ActiveSheet.Range("A1") wk.SaveAs FolderName2 & FileName wk.Close False
これは、標準モジュールにマクロが書かれているものを他から起動する例です。 マクロは12種類あるそうですが、どこかのセルに「データの入力規則」でマクロ名を列挙しておいて、これを1つ選択してからボタンでも押してマクロ開始するのが良いでしょう。
そして、無限ループさせてExcelをハングアップさせてしまう事を恐れてはいけません。実行前にブックを保存して、強制終了させても良いように備えてから動かせば良いだけです。また、ループ中に DoEvents を1行入れておくと、ESCキーやBREAKキーによる中断ができる可能性が出てきますので、試してみると良いかも。
(???) 2017/12/07(木) 17:36
(hiro) 2017/12/07(木) 17:46
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.