- 締切済み
エクセルでVBAを使ってブック内にある特定の言葉をすべて置き換えしたい
VBAの超初心者なのですが、 品番変更に伴い複数枚のシートから成るエクセルファイルの特定の文字を置換えたいのですが・・・。 Range(Cells(1, 1), Cells(65536, 256)).Replace What:="旧品番", Replacement:="新品番" で1枚のシートだけなら置換えできたのですが、すべてのシート(ファイル内すべて)の置換え方がわかりません。 どうしたらよいのでしょう。教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
>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)
補足が遅くなりました。 worksheetsというのは、activeなエクセルの中にある、シートすべて(複数)です。 Dim ws As Worksheet ここで定義しているwsのWorksheetはひとつ(単数)のシートです。 For Each ws In Worksheets (処理) Next 上記のように記述した場合、VBAがはシートの1枚目をwsにコピー?して、(処理)を行います、 next で、上に戻りシートの2枚目をwsにコピー?します。 これをシートがなくなるまで繰り返してくれます。 つたない説明ですが、お役にたてば幸いです。 ネットを検索していただくと、もっと親切にかいたHPがあると思うので、そちらも参照ください。
- nekotaru
- ベストアンサー率50% (22/44)
こんな感じでしょうか? Sub a() Dim ws As Worksheet For Each ws In Worksheets ws.Cells.Replace What:="旧品番", Replacement:="新品番" Next End Sub
お礼
早速のご回答ありがとうございました。 きちんとできました!! この2行目の For Each ws In Worksheets の In Worksheets というところが超初心者な私には よくわからないのですが、ここですべてのシートでと定義している のでしょうか? もし、お時間あったら内容を教えてください。
お礼
ありがとうございます! 使えるようになったらきっと便利だとおもうので ちょっとがんばってみます。 またわからないことあったらお願いしま~す!!