人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

あるフォルダの中にマクロを含んだ大量のエクセルブックが有ります。ソースの中身は全て一緒ですが特定の場所を変更する必要があります。変更すべきところは通常なら「置換」ですむような簡単な内容なのですがファイル数が300以上有ります。一つ一つファイルを開きVisual Basic Editorで修正するのは非常に手間です。楽に全てのソース内を変更する方法をご教授いただける方、よろしくお願い致します。

●質問者: hatmas
●カテゴリ:コンピュータ
✍キーワード:Visual Basic エクセル ソース ファイル フォルダ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● fonya3

異解ですが、修正後のマクロソースが入ったファイルを用意して、それに対象の300ほどのファイルからデータをVBAでコピー処理するという、逆説的な解決方法はいかがでしょうか?


2 ● うぃんど
ベストアンサー

Excelのバージョンによってセキュリティのデフォルト設定などが違いますが、基本的には下記のような方法で置換は可能です

http://officetanaka.net/excel/vba/vbe/07.htm

複数ブックのマクロを置換する

Sub Sample3()
 Dim Target As Workbook, buf As String, VBC, i As Long
 Const Path As String = "C:\Tmp\"
 buf = Dir(Path & "*.xls")
 Do While buf <> ""
 Set Target = Workbooks.Open(Path & buf)
 With Target.VBProject.VBComponents("Module1").CodeModule
 For i = 1 To .CountOfLines
 If .Lines(i, 1) = " Const StartDay As Date = #4/1/2006#" Then
 .ReplaceLine i, " Const StartDay As Date = #9/1/2007#"
 End If
 Next i
 End With
 Target.Save
 Target.Close
 buf = Dir()
 Loop
End Sub

※C:\Tmpフォルダにあるすべてのブックに対し、Module1内に記述されている「Const StartDay As Date = #4/1/2006#」をすべて「Const StartDay As Date = #9/1/2007#」に置換します。

◎質問者からの返答

実験したところ成功しました!

そもそもVBAからVBA自身を操作という概念が私になかったためあやうく全てのファイルを手動で修正してしまうところでした。ご教授いただきありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ