'マクロで一括置換する方法です。
'たくさんのシートに記入された文字列を複数のシートに渡って一括置換する方法を教えてください。
'置換前と置換後の文字をインプットボックスに記述しブック全体の文字を一括で置換(変更)する
'その後は戻せなくても結構です。
下のように記述しましたが、うまく動作しません
よろしくお願いします。
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切り形式ではなく、セ...
-
ExcelのROUND関数を一括解除し...
-
Wordチェックボックス作り方(...
-
エクセルでアルファベット5段階...
-
txtファイル内の指定の単語の数...
-
Ctrl+Hで置換にならない
-
複数PDFファイル内の特定文字列...
-
文字列の<>で囲まれた文字列...
-
VBAでコピーしたのち検索置換窓...
-
Wordで複数の単語を一括置換す...
-
8パズルで解けない問題の意味は...
-
秀丸エディタ タブをカンマに...
-
置換 音が鳴ってた気がするの...
-
文章の単語を一括で置換する方...
-
エクセルで置換リストを別ブッ...
-
秀丸エディタで【 】内の文字...
-
英文のワード文章でアルファベ...
-
ファイル内のタグの一括変換方...
-
<IFRAME>でコンテンツ部分のみ...
-
NTFSはバージョンがまたがる場...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切り形式ではなく、セ...
-
エクセルでアルファベット5段階...
-
txtファイル内の指定の単語の数...
-
Wordチェックボックス作り方(...
-
秀丸エディタ タブをカンマに...
-
ExcelのROUND関数を一括解除し...
-
Ctrl+Hで置換にならない
-
エクセル 置換中の値の更新
-
vbaで実行後、指定のセルに戻す...
-
エクセルで置換リストを別ブッ...
-
WORDで一括置換
-
アクセスのテーブル上でデータ...
-
Wordで一括して改ページする方法
-
パワーポイントの置き換えマクロ
-
tan(x/2)=tと置く置換積分について
-
入力済みの文字中にある句読点...
-
置換(検索場所に「ブック」を...
-
ワードでの検索、置換モードの...
-
大学数学の代数の問題です。 ・...
-
複数PDFファイル内の特定文字列...
おすすめ情報