シート名を一括で編集したい場面は多々ある。
シート名を一括置換する
それを可能にするのが、以下のVBAマクロ
For Eachでワークシートオブジェクトを取得し、文字列の置換を行う。
Sub シート名置換()
Dim ws As Worksheet
Dim myFind As String
Dim myReplace As String
myFind = Application.InputBox("検索文字列は?", "シート名置換", Type:=2)
myReplace = Application.InputBox("置換文字列は?", "シート名置換", Type:=2)
For Each ws In ActiveWorkbook.Worksheets
On Error Resume Next
ws.name = Replace(ws.name, myFind, myReplace, 1, -1, 2)
Next ws
End Sub
Replace関数
構文
Replacce(置換対象, 検索文字列, 置換文字列, 検索開始位置, 置換数, 比較モード)
「検索開始位置」以降は省略可能な引数
比較モード
値 | 比較内容 |
---|---|
0 | テキストモードで比較(大文字、小文字の区別をしない) |
1 | バイナリモードで比較 |
2 | MS Accessでのみ使用可能(DBに格納されている設定に基づく) |
テキストモードとバイナリモードの違い
テキストモードは、OSなどの環境に依存する。Windows環境で改行をするとき、入力時は"\r\n"を"\n"、出力時は"\n"を"\r\n"に自動変換してくれる。
バイナリモードは、テキストモードのように自動変換してくれない。
"\n"は"\n"のままだし、"\r\n"は"\r\n"のままになる。
「バイナリ=2進数」 、つまり2進数のレベルで比較したい場合にバイナリモードを使う。
要するに、より厳密に変換したい場合に「バイナリモード」、
特に意識しない場合は「テキストモード」を使う。
追記:2014/05/27
【VBA】Excelのシート名の一覧を取得し、変換する も合わせてどうぞ!
以上
VBAコードを書かなくても以下の記事により一括変更できるみたいです。
返信削除http://superdbtool.blog.jp/archives/951643.html
そういうのもあるんですね。情報ありがとうございます。
削除ただ職業柄、お客様の重要なデータを扱っているので、好き勝手インストールできないんですよ。(フリーのものは特に)
ですので、マクロで頑張っています!