• 締切済み

エクセルでVBAを使ってブック内にある特定の言葉をすべて置き換えしたい

VBAの超初心者なのですが、 品番変更に伴い複数枚のシートから成るエクセルファイルの特定の文字を置換えたいのですが・・・。 Range(Cells(1, 1), Cells(65536, 256)).Replace What:="旧品番", Replacement:="新品番" で1枚のシートだけなら置換えできたのですが、すべてのシート(ファイル内すべて)の置換え方がわかりません。 どうしたらよいのでしょう。教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>In Worksheets というところが超初心者な私には よくわからないのですが エクセルVBAなどには、「コレクション」という考えがあります。 For Eachはコレクションの構成メンバー全部について、1つづつ 拾い上げて、WS.XXXという表現で捉えさせてくれます。 ワークシートの場合は In Worksheets ブックの場合は In Workbooks シェイプの場合は  In Shapes セルの場合は In range(・・) 配列でもForEachは使えます。 ーー Sub test01() Dim a(3) a(0) = 0: a(1) = 1: a(2) = 2: a(3) = 3 For Each x In a MsgBox x Next End Sub -- コレクションに増やすには  コレクション(後尾にsが付く).Add コレクションより除くには  コレクションs(削除するメンバー).Delete のパターンが多い。 ーーー その他 http://arrow3.way-nifty.com/shige/2004/08/excelvba_rangea.html

  • nekotaru
  • ベストアンサー率50% (22/44)
回答No.2

補足が遅くなりました。 worksheetsというのは、activeなエクセルの中にある、シートすべて(複数)です。 Dim ws As Worksheet ここで定義しているwsのWorksheetはひとつ(単数)のシートです。 For Each ws In Worksheets (処理) Next 上記のように記述した場合、VBAがはシートの1枚目をwsにコピー?して、(処理)を行います、 next で、上に戻りシートの2枚目をwsにコピー?します。 これをシートがなくなるまで繰り返してくれます。 つたない説明ですが、お役にたてば幸いです。 ネットを検索していただくと、もっと親切にかいたHPがあると思うので、そちらも参照ください。

toriasusan
質問者

お礼

ありがとうございます! 使えるようになったらきっと便利だとおもうので ちょっとがんばってみます。 またわからないことあったらお願いしま~す!!

  • nekotaru
  • ベストアンサー率50% (22/44)
回答No.1

こんな感じでしょうか? Sub a() Dim ws As Worksheet For Each ws In Worksheets ws.Cells.Replace What:="旧品番", Replacement:="新品番" Next End Sub

toriasusan
質問者

お礼

早速のご回答ありがとうございました。 きちんとできました!! この2行目の For Each ws In Worksheets の In Worksheets というところが超初心者な私には よくわからないのですが、ここですべてのシートでと定義している のでしょうか? もし、お時間あったら内容を教えてください。

関連するQ&A

  • シート内のひらがなを全て削除したい

    こんばんは。エクセル2003です。 シート内の全てのひらがなを削除して 英数字、漢字、記号のみを残したいのですが Cells.Replace what:="あ", Replacement:="", LookAt:=xlPart Cells.Replace what:="い", Replacement:="", LookAt:=xlPart Cells.Replace what:="う", Replacement:="", LookAt:=xlPart ・ ・ ・ Cells.Replace what:="ん", Replacement:="", LookAt:=xlPart とやっていくしかないでしょうか? 何か効率のいい方法があれば教えて頂ければ助かります。 よろしくお願いします。

  • エクセル VBA "-"ハイフンの削除

    お世話になります。 セルに含まれる文字列の中から"-"ハイフンを削除しようと思い、 Cells.Replace What:="-", Replacement:="" と記述したのですが、例えば 0-0-0-111 は 111 となってしまい、"0"も消えてしまいます。もちろん、"0-0-0-111 "は文字列です。 また、シート内の全てのセルが文字列にならなければいけないので関数式を入れることはできません。ハイフンの位置もその都度バラバラです。 よろしくお願いいたします。

  • EXCEL VBAを使ってファイル内にある特定の文字すべてに色をつけたい

    おはようございます。 EXCEL VBAであるひとつのEXCELファイルの中のすべてのシートの特定の文字が入っているセルに色をつけるにはどのようなコードを使えばいいでしょうか? (例)田中 という文字列が入っているセルはすべてブルーの色がつくという感じです。 教えて下さい。 よろしくお願いします。

  • Excelの置換で書式が変わる現象の回避策

    下記のようなマクロで複数の置換をしています。 Cells.Replace What:="★", Replacement:="☆", MatchCase:=True Cells.Replace What:="◆", Replacement:="◇", MatchCase:=True Cells.Replace What:="■", Replacement:="□", MatchCase:=True ・ ・ ・ セル内で改行して文字サイズや色を変えている箇所では置換後1行目の書式に変わってしまいます。 文字だけを置換をしたいのですがこれを回避する方法はあるのでしょうか教えてください。

  • エクセルで置換リストを別ブックにおいたマクロを作りたい

    以下は同一ブック内の「置換」のワークシートに 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

  • Replace関数ですか?Replaceメソッドで

    VBAの基本的な質問なのですが ************************************* Sub test() Cells.Replace What:="あああ", Replacement:="いいい" End Sub ************************************* の「Replace」は、 Replace関数ですか? Replaceメソッドですか? オブジェクトブラウザで確認すると ************************************* Excel.Range のメンバ VBA.Strings のメンバ Office.TextRange2 のメンバ Excel.WorksheetFunction のメンバ ************************************* のReplaceがあるのですが 例のReplaceはどれに該当するか教えてください。 ご回答よろしくお願いします。

  • VBAセル参照のパスのブック名に汎用性を持たせたい

    皆様どうぞ宜しくお願いいたします。マクロ初心者です。 Excel 2003で作業をしております。 今回の仕事で必要なので、大変困っております。 BOOK1とBOOK2を開き、BOOK1のAシートのセル参照をBOOK2でもBOOK2でのセル参照として活かす為、BOOK1のAシートの=をすべて#に置換した後、BOOK2にAシートをコピーし、逆に#を=に戻しました。 ここから後なのですが、BOOK名が特定されてしまうため、汎用性が効きません。 どのようにすればよいのかお教えください。 どうぞ宜しくお願いいたします。 下記マクロコード Cells.Replace What:="=", Replacement:="#", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Sheets("店頭").Select Sheets("店頭").Copy Before:=Workbooks("ここの部分です.xls").Sheets(3) Cells.Replace What:="#", Replacement:="=", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End Sub

  • エクセルで置換リストを別ブックにおいたマクロを作りたい

    置換専用につくったワークシートに 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

  • VBAで特定のシートを複数選択する方法

    エクセルのマクロで複数のシートから特定の文字のみが入力されているシートを全て選択したいのですが、どのようにプログラムすればよいのでしょうか? 最近勉強し始めたばかりでVBAについての知識が乏しく、完全に行き詰ってしまいました。

  • エクセルVBAをつかってフォルダ内のファイルの特定シートのデータを1つのシートにまとめる

    はじめまして。 過去ログ検索しましたが、載っていないようなので投稿させていただきます。 ブックAがあるフォルダ内にある「○年*.xls」のさらに「○月(○月以外のシートもあり)」のシート内の特定のセル(範囲は固定されてます)の文字列を、全てブックAの1つのシートにまとめたいのですが、VBAにてこれは可能ですか? フォルダ内のファイルが複数だったり、またそのファイル内の該当シートが1つだったり複数だったりで、かなり行き詰ってます。 どなたかご存知の方いらっしゃいましたらご教授願います。 エクセル2000を使用しております。

専門家に質問してみよう