2009年4月22日水曜日

VBAからVBAのコード編集

マクロを仕込んだブックを使っていて、古いコードを一括で編集したいときがあります。

そんなときは、コードを編集するマクロを書いてやればいいのです。

ここでは簡単な編集をメモっときます。

ヘルプを見るとわかるけど、プロシージャ作ったりなんかもできるみたい。

個人的にはコードをVBAで作っていくより、ファイル読み込ませるほうが確実で早いと思うんだけど。。。


'指定ブックのVBAコード編集する
Public Sub UpdateCode()
Dim path As String
Dim wb As Workbook
Dim tgt_mod As String
Dim in_path As String

'指定ブックのパス
path = "C:\WORK\Target.xls"
'追加したいモジュール名称
tgt_mod = "Module1"
'対象ブックを開く
Set wb = Application.Workbooks.Open(path)

With wb.VBProject.VBComponents(tgt_mod).CodeModule

'5行目に文字列を挿入する
.InsertLines 5, "msgbox cstr(5)"

'テキストファイルから追加する

in_path = "C:\WORK\input.bas"
.AddFromFile in_path

'文字列を追加する
.AddFromString ("'コメントを追加する")

'そのモジュール内のコードを削除する
.DeleteLines 1, .CountOfLines

End With

'対象ブックを保存して閉じる
wb.Save
wb.Close

Set wb = Nothing
End Sub
あとは、対象ブックを探すロジックを入れるだけ。

ただし、コード編集をしたいブックのVBAProjectがロックされてる場合はエラーになります。

ネットを色々調べてみたけど、どうやらVBAからVBAProjectのロック解除はできなさそう。

まぁできたらロックの意味あんまりないよね。

今度からは後々のことを考えて作ります。

※ブックのロック設定・解除はVBAからもできます。

0 件のコメント:

コメントを投稿