
置換専用につくったワークシートに
A列に検索文字
B列に置換文字を入力したリスト(例えば"Book2.xls"の"sheet1")を作りました。
このリストを使って別のブック内(例えば"Book1.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
No.3ベストアンサー
- 回答日時:
No.2さんのおっしゃることで完璧です。
コードが書かれているブックのA:B列の複数置換条件をもとに
E:\Office\Excel\Book1.xlsの各ワークシートを置換する例です。
Sub 置換1()
Dim cntRow As Long
Dim myRng As Range
Dim myBook As Workbook
Dim mySht As Worksheet
Dim i As Long
'置換範囲をRangeオブジェクトmyRngに代入
With ThisWorkbook.Worksheets(1)
cntRow = .Range("A" & Rows.Count).End(xlUp).Row
Set myRng = .Range("A1:B" & cntRow)
End With
'対象ブックOpen
Set myBook = Workbooks.Open("E:\Office\Excel\Book1.xls")
'対象ブックのワークシートをループ
For Each mySht In myBook.Worksheets
For i = 1 To cntRow
If Len(myRng(i, 1).Value) > 0 Then
mySht.Cells.Replace _
What:=myRng(i, 1).Value, _
Replacement:=myRng(i, 2).Value, _
LookAt:=xlPart, SearchOrder:=xlByColumns
End If
Next i
Next
End Sub
※上のコードの変形です...
Sub 置換2()
Dim cntRow As Long
Dim myVar As Variant
Dim myBook As Workbook
Dim mySht As Worksheet
Dim i As Long
'置換パターンを配列myVarに代入
With ThisWorkbook.Worksheets(1)
cntRow = .Range("A" & Rows.Count).End(xlUp).Row
myVar = .Range("A1:B" & cntRow).Value
End With
'対象ブックOpen
Set myBook = Workbooks.Open("E:\Office\Excel\Book1.xls")
'対象ブックのワークシートをループ
For Each mySht In myBook.Worksheets
For i = 1 To cntRow
If Len(myVar(i, 1)) > 0 Then
mySht.Cells.Replace _
What:=myVar(i, 1), _
Replacement:=myVar(i, 2), _
LookAt:=xlPart, SearchOrder:=xlByColumns
End If
Next i
Next
End Sub
No.2
- 回答日時:
for each objBook in Workbooks
for each objSheet in objBook.worksheets
処理
next
next
「for each」はinで指定した範囲内をぐるぐる回ります。
No.1
- 回答日時:
検索・置換にはブック単位というのが在る。
「検索場所」を「ブック」を択ぶ。そして置換操作をしてマクロの記録を採る。
ーー
それを
Set wb = Workbooks("2.xls").Worksheets("sheet2")
What:=wb.Cells(i, "A"),
Replacement:=wb.Cells(i, "B"),
の部分を変えたものが下記である。
ーーー
すると下記のようなコードになる。
Sub Macro1()
Set wb = Workbooks("2.xls").Worksheets("sheet2")
For i = 1 To 2
Cells.Replace What:=wb.Cells(i, "A"), Replacement:=wb.Cells(i, "B"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next
End Sub
ーー
Workbooks("2.xls")は開いておくこと。
Set wb = Workbooks("2.xls").Worksheets("sheet2")
のA1,B1には置換前と置換後の対応語句を入れておく。
A2,B2以下も同じ。
業が増えれば
Worksheets(1).Range("A65536").End(xlUp).Row
式で最下行を検出する。前にブック限定のコードwb.をつけることと
Worksheets(1).を2とかに変える。
Sheet2にしたのはこちらの都合。意味なし、ごめん。
上例では私の場合旨く行くようだ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
txtファイル内の指定の単語の数...
-
Wordチェックボックス作り方(...
-
カンマ区切り形式ではなく、セ...
-
英文のワード文章でアルファベ...
-
ファイル名の変更
-
キングファイルの背表紙を作成...
-
htmlでテキストファイルの中身...
-
ホームページビルダー16のペー...
-
中国のEV
-
セコム株式会社って 社食ありま...
-
ビルダーで編集タブが全部出ない
-
検索結果を別ページのインライ...
-
<IFRAME>でコンテンツ部分のみ...
-
Flash5:外の景色を時間毎に変える
-
書かれているURLと飛んだ先のUR...
-
htmlファイルをブラウザで開く...
-
株式投資の講座か教室教えてく...
-
flashでflvを読み込んでフレー...
-
フレームを使ったホームページ...
-
あらかじめフォームに内容を入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切り形式ではなく、セ...
-
txtファイル内の指定の単語の数...
-
Wordチェックボックス作り方(...
-
ExcelのROUND関数を一括解除し...
-
エクセルで置換リストを別ブッ...
-
Ctrl+Hで置換にならない
-
パワーポイントの置き換えマクロ
-
秀丸エディタ タブをカンマに...
-
ワードでの検索、置換モードの...
-
エクセル 置換中の値の更新
-
Excel or条件で抽出し置換したい
-
アクセスのテーブル上でデータ...
-
エクセルの”?”の置換について
-
複数のhtmlファイルのソースを...
-
エクセル リンクを貼ったブッ...
-
dreamweaver でエンコード一括...
-
エクセル2002での単純な文字置...
-
まとめてリンクが張れるフリー...
-
秀丸で、複数の置換を1ステッ...
-
ファイル名の変更
おすすめ情報