以下は同一ブック内の「置換」のワークシートに
A列に検索文字
B列に置換文字
を書き、置換するマクロなのですが、これですと同一ブック内でしか作業できません。
このリストを別ファイル(例えば"Book2.xls"の"sheet1")に書き、別のファイル(例えば"Book1.xls")で実行するにはどうしたらよいでしょうか。
Sub 置換()
For i = 1 To Worksheets("置換").Range("A65536").End(xlUp).Row
Cells.Replace What:=Worksheets("置換").Range("A" & i).Value, _
Replacement:=Worksheets("置換").Range("B" & i).Value, _
LookAt:=xlPart, SearchOrder:=xlByColumns
Next
End Sub
明示的に対象となるシートを指定すれば良いだけです。
例えば、標準モジュールに下記を転記して、そのブック(質問では Book2.xls)の一番左のシートに置換用の設定をします。
Sub 置換()
With ThisWorkbook
If ActiveSheet Is .Worksheets(1) Then Exit Sub
For i = 1 To .Worksheets(1).Range("A65536").End(xlUp).Row
ActiveSheet.Cells.Replace _
What:=.Worksheets(1).Range("A" & i).Value, _
Replacement:=.Worksheets(1).Range("B" & i).Value, _
LookAt:=xlPart, SearchOrder:=xlByColumns
Next
End With
End Sub
置換したいブック(質問では Book1.xls)の対象シートを選択して実行すれば希望の動作になると思います。
お礼
なるほど、ありがとうございます。 置換リストを書いたブック(ここではBOOK2.xls)のマクロではなく、PERSONL.xlsのマクロとして動作させることは可能でしょうか? つまり置換リストを書いたブック(ここではBOOK2.xls)を開かずに実行できないかな、ということでございます。