
'マクロで一括置換する方法です。
'たくさんのシートに記入された文字列を複数のシートに渡って一括置換する方法を教えてください。
'置換前と置換後の文字をインプットボックスに記述しブック全体の文字を一括で置換(変更)する
'その後は戻せなくても結構です。
下のように記述しましたが、うまく動作しません
よろしくお願いします。
Private Sub CommandButton11_Click()
Dim BeforeStr As Integer
Dim AfterStr As Integer
Dim WS As Worksheet
Dim N As Integer
For N = 1 To Worksheets.Count
Set WS = Worksheets(N)
For i = 1 To 100
For j = 1 To 200
Before.Cells(i, j).Value = InputBox("置換前の文字列を入力してください。")
After.Cells(i, j).Value = InputBox("置換後の文字列を入力してください。")
For Each WS In Worksheets
WS.Activate
For Each s In WS.Cells
If s.Name Like "InputBox*" Then
s.Select
Selection.Cells(i, j).Value = _
Replace(Selection.Cells(i, j).Value, BeforeStr, AfterStr)
End If
Next j
Next i
Next N
Next
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんばんは。
ご質問のコードは、VBAに似ているけれども、まったくコードとしては成り立っていません。
まず、基本を学んだほうがよいのではありませんか?
一括置換のはずなのに、4万回も入力を求められるのですか?
それから、
s.Select
これは、シートが違えばエラーが発生するはずです。
Selection もシートが違えばエラーが発生します。
なお、以下は、xlPart にしてあります。
複雑な置換を求めるなら、以下では出来ません。
'-----------------------------------------
Private Sub CommandButton11_Click()
Dim sSrc As Variant
Dim sRep As Variant
Dim wh As Worksheet
sSrc = Application.InputBox("検索値を入力してください。", "検索値", Type:=2)
If VarType(sSrc) = vbBoolean Or sSrc = "" Then Exit Sub
sRep = Application.InputBox("置換を入力してください。", "置換値", Type:=2)
If VarType(sRep) = vbBoolean Or sRep = "" Then Exit Sub
For Each wh In ActiveWorkbook.Worksheets
wh.UsedRange.Replace _
What:=sSrc, _
Replacement:=sRep, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False
Next wh
End Sub
No.2
- 回答日時:
1シートずつ捉えて(例For Each s)置換するなら、置換操作のマクロの記録をとって、シート数だけ繰り回せばよいのでは。
そんなことは一言も述べてないが、我流を打ち出して要るが、マクロの記録から学ぶことは卒業したレベルではなかろうと思う。
マクロの記録に少々加えて
Sub Macro1()
Dim sh As Worksheet
For Each sh In Worksheets
MsgBox sh.Name
sh.Activate
sh.Range("A1:X200").Select
Selection.Replace What:="zzzz", Replacement:="変換", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next
End Sub
他にWhat:="zzzz", Replacement:="変換", の"zzz","変換"の部分をInputboxの2つの応答文字列に置き換えればよい。
まずこれがあって、それではカバーできてない点や、不満足な点を
質問すべきではないかと思う。
No.1
- 回答日時:
記述した内容ですが、色々とうまくいかない所が見受けられます。
実際には、もっとシンプルにできるので、下記参考にして下さい。
全部のシートの、A1:GR100のセルを置換対象としています。
Sub sample()
Dim I As Integer
Dim Bef As String
Dim Aft As String
Bef = InputBox("置換前の文字列を入力してください。")
Aft = InputBox("置換後の文字列を入力してください。")
For I = 1 To Worksheets.Count
Worksheets(I).Select
Range(Cells(1, 1), Cells(100, 200)).Select
Selection.Replace Bef, Aft
Range("A1").Select
Next I
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリから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ステッ...
-
ファイル名の変更
おすすめ情報