置換専用につくったワークシートに
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切り形式ではなく、セ...
-
txtファイル内の指定の単語の数...
-
エクセルでアルファベット5段階...
-
エクセルで置換リストを別ブッ...
-
サクラエディタの正規表現(gre...
-
Wordチェックボックス作り方(...
-
ExcelのROUND関数を一括解除し...
-
WORDで一括置換
-
Excelで、10000,20000,30000と...
-
アクセスのテーブル上でデータ...
-
Excel2019で1行に入っている複...
-
ワードでの検索、置換モードの...
-
Atokの単語登録をIMEにコピーし...
-
エクセルで例えば、関数を使っ...
-
マクロで文字列をブック全体に...
-
ファイル自体の置換
-
パワポにて語句の置換
-
エクセル 置換中の値の更新
-
エクセル 数式 不等号を反転
-
複数PDFファイル内の特定文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切り形式ではなく、セ...
-
エクセルで例えば、関数を使っ...
-
エクセルでアルファベット5段階...
-
文字を一括で置換するソフト・...
-
Wordチェックボックス作り方(...
-
txtファイル内の指定の単語の数...
-
Ctrl+Hで置換にならない
-
ExcelのROUND関数を一括解除し...
-
エクセル 置換中の値の更新
-
Excelで、10000,20000,30000と...
-
秀丸エディタ タブをカンマに...
-
マクロで文字列をブック全体に...
-
エクセルで置換リストを別ブッ...
-
パワーポイントの置き換えマクロ
-
アクセスのテーブル上でデータ...
-
WORDで一括置換
-
Wordで一括して改ページする方法
-
vbaで実行後、指定のセルに戻す...
-
置換(検索場所に「ブック」を...
-
文字列の<>で囲まれた文字列...
おすすめ情報