ExcelのVBAで第三者の作成したExcelのマクロを操作するマクロを作成しています。
操作したいワークブックのVBEにはパスワードがかかっていますが、
プロシージャーはPublicになっているので、
Application.Runメソッドで操作することまではできました。
ところがApplication.Runメソッドを使うと、
操作した側の元のマクロがアクティブではなくなってしまうのか、
そこで処理が止まってしまい、
ActiveWorkbook.SaveCopyAs以降の記述が処理されません。
同作業を複数のワークブックに対し繰り返し処理させたいので、
ここで終了しては意味がないのです。
問題のある箇所を分解し抽出した文が以下となります。
Sub test() Workbooks.Open ("フルパス\操作したいファイル.xls") Application.Run "'操作したいファイル.xls'!マクロ名" ActiveWorkbook.SaveCopyAs "フルパス\操作したいファイル2.xls" ActiveWorkbook.Close (False) End Sub
4行目からActiveWorkbookとしているのは、
操作したマクロが自身のワークブック名を「Book*」と
新しくするためです。
3行目を「'Application.Run…」とコメントアウトすると
保存もクローズもされるので、
原因は操作の主導権(?)が
被操作側のワークブックに移ったせいではないかと推察しています。
どうしたら思い通りの処理を実現できるでしょうか?
皆様のお知恵を借りたく存じます。
よろしくお願いします。
環境:Windows 7, Excel 2010

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/05 00:31