• ベストアンサー

ブック内に存在するワークシート名の部分消去

ワークシート名の一部変更(消去)についてお尋ね致します。 Aさん○月分 Bさん○月分 Cさん○月分 ※ ○内は全て同じ数字 上記のようなワークシート名が存在するブックにおいて、“○月分”のみを一括消去する方法が知りたいのですが、ご教授いただけないでしょうか? 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

hige_082です 補足読みました う~ん、質問に書いていないことは、こちらではどうすることも出来ません >早速試しましたが、”○月分”の○部分も消したく望んでおります。 ○には1~12が当てはまるのは、想像が付くので 「「○月分」の部分を消去したい文字列に書き換えて実行するだけ」 と、書いといたのですが、説明がわかりにくかったでしょうか >先般、ご教授いただきましたようにLike演算子によって制御できるのでは? ん?、ちょっと探してみました http://qanda.rakuten.ne.jp/qa4842240.html この事ですね、失礼しました しかし、Likeは使用しませんでした 今回はシートの名前の変更だけなので、置換(Replace)で処理しました 試してみてください '標準モジュールへ Sub Macro() Dim Ws As Worksheet Dim i As Integer For i = 12 To 1 Step -1 For Each Ws In Worksheets Ws.Name = Replace(StrConv(Ws.Name, vbNarrow), i & "月分", "") Next Ws Next i End Sub

Tarjin_lar
質問者

お礼

hige_082 様 出張中であったため、お礼が遅くなりまして申し訳ございませんでした。 帰社の後、早速試しました。 理想通りの動作に感動致しました。 本当に有難うございました。

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

VBAなら簡単 「○月分」の部分を消去したい文字列に書き換えて実行するだけ '標準モジュールへ Sub Macro() Dim Ws As Worksheet For Each Ws In Worksheets Ws.Name = Replace(Ws.Name, "○月分", "") Next Ws End Sub 参考まで

Tarjin_lar
質問者

補足

hige_082 様 いつも大変お世話になっております。 早速試しましたが、”○月分”の○部分も消したく望んでおります。 ○に表す数字は月毎に変化しておりますので、先般、ご教授いただきましたように Like演算子によって制御できるのでは?と勝手ながら想像しておりました。 コードの使い方が理解できていないため、お手数ですが、ご教授賜りたく宜しくお願い致します。

  • diashun
  • ベストアンサー率38% (94/244)
回答No.1

VBAでの処理で回答します。 (VBであれば少しExcelファイル読込み処理など必要になりますが) Aさん、Bさん、Cさん・・・と「○月分」の直前の文字が「ん」であり、「ん」の文字が1文字だけという前提で、VBAのコードを記述してみました。これを以下の通りコピペしてみて下さい。 先頭のシートに「CommandButton1」を貼り付けそのシートモジュールに以下をコピーペースト 'ここからコピー********* Option Explicit Private Sub CommandButton1_Click() Application.ScreenUpdating = False Call ChangeShName Application.ScreenUpdating = True End Sub 'ここまでコピー********* 標準モジュール(Module1)に以下をコピーペースト 'ここからコピー********* Option Explicit Public Sub ChangeShName() Dim i As Integer, strShName As String Dim Wb, Sh, iPos As Integer, s Set Wb = ThisWorkbook Set Sh = Wb.Worksheets For Each s In Sh iPos = f_GetPos(s.Name) s.Name = Mid(s.Name, 1, iPos) Next End Sub Private Function f_GetPos(s_Name As String) As Integer f_GetPos = InStr(s_Name, "ん") End Function 'ここまでコピー********* 先頭シート上に作った「CommandButton1」をクリックすると シート名から「○月分」を削除した名前になります。 ただし、このブックのシート名がすべて同じルールに基づいた 名前**さん×××」になっていることが前提で、それ以外のシート名がある場合は別途処理が必要ですが・・・。

Tarjin_lar
質問者

お礼

diashun 様 ご回答、有難うございます。 早速試してみます。 有難うございました。

関連するQ&A

専門家に質問してみよう