まずはじめに
投稿に時間がかかって申し訳ありませんが、あなただけでなく、同じ機能を探している他の人にも役立つように、UI を作成していました。
最初に有効にする必要がありますTrust Access to the VBA project Object model
Excel を開き、[ファイル] タブをクリックします。オプション | トラスト センター | セキュリティ センターの設定 | マクロ設定
マクロを有効にしてクリックTrust access to Visual Basic projects
次へ VBA エディタで
ツール | をクリックします。オプションをクリックし、[エディター] タブでチェックボックスを選択しますRequire Variable Declaration
次に、ここからサンプル ファイルをダウンロードし、Run
Sheet1のボタンを押すだけで、以下に示すようにユーザー フォームが起動します。
Excelファイルのみを含むフォルダーを選択するだけです。関連する情報を入力してクリックするStart Replace
と完了です:)
使用コード
Sheet1 コードエリア
Option Explicit
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
ユーザーフォームコードエリア
Option Explicit
Private Sub CommandButton1_Click()
Dim Ret
Ret = BrowseForFolder
If Ret = False Then Exit Sub
TextBox1.Text = Ret
End Sub
Private Sub CommandButton3_Click()
On Error GoTo Whoa
Dim wb As Workbook
Dim strPath As String, strfile As String
Dim strToReplaceWith As String, strToReplace As String
Dim i As Long, j As Long
Dim VBE As Object
strPath = TextBox1.Text & "\"
strfile = Dir(strPath)
While strfile <> ""
Set wb = Workbooks.Open(strPath & strfile)
Set VBE = ActiveWorkbook.VBProject
If VBE.VBComponents.Item(1).Properties("HasPassword").Value = False Then
If VBE.VBComponents.Count > 0 Then
For i = 1 To VBE.VBComponents.Count
VBE.VBComponents.Item(i).Activate
If VBE.VBE.CodePanes.Item(i).CodeModule.CountOfLines > 0 Then
For j = 1 To VBE.VBE.CodePanes.Item(i).CodeModule.CountOfLines
If InStr(1, VBE.VBE.CodePanes.Item(i).CodeModule.Lines(j, 1), TextBox2.Text, vbTextCompare) Then
strToReplace = VBE.VBE.CodePanes.Item(i).CodeModule.Lines(j, 1)
strToReplaceWith = Replace(strToReplace, TextBox2.Text, TextBox3.Text, 1, 1, vbTextCompare)
VBE.VBE.CodePanes.Item(i).CodeModule.ReplaceLine j, strToReplaceWith
End If
Next
End If
Next i
End If
End If
wb.Close True
strfile = Dir
Wend
LetsContinue:
Application.ScreenUpdating = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
'~~> Function to pop the browse folder dialog
Function BrowseForFolder(Optional OpenAt As Variant) As Variant
Dim ShellApp As Object
'~~> Create a file browser window at the default folder
Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please choose a folder", 0, OpenAt)
'~~> Set the folder to that selected. (On error in case cancelled)
On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error GoTo 0
'~~> Destroy the Shell Application
Set ShellApp = Nothing
Select Case Mid(BrowseForFolder, 2, 1)
Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then GoTo Invalid
Case Else
GoTo Invalid
End Select
Exit Function
Invalid:
BrowseForFolder = False
End Function
Private Sub CommandButton4_Click()
Unload Me
End Sub
その他のスナップショット
マクロを実行する前にコードを置き換える必要があるファイル
マクロ実行後
編集
代替ファイルのダウンロード場所
上記のwikisendリンクが切れた場合、ファイルはここからダウンロードできます