• 締切済み

Excel 複数のシート名を一括変更できる名簿作り

Excelでシート名を変更する際、特定のブックの特定のセルに文字を打ち込むと、他の全てのブックのシート名が一括で変更されるようにすることは可能でしょうか。 例えばですが“名簿”というブックの「A1~A5」に文字を入力すると、他の全てのブックの「Sheet1」には“名簿”ブックの「A1」に打ち込んだ文字が反映され、「Sheet2」には“名簿”ブックの「A2」…と、一括で変更できる方法はないかと思っています。 他の全てのブックは一つのフォルダの中に集約します。 また、ブック名だけ変えて中身は原本のコピーをしていきます。 3000を超えるブックを作るので、変更をすることになった時は全て手作業になるかと思うとゾッとします…。 調べていると、VBAというものを使いそうというところまで分かったのですが、こことはカテゴリが違っていましたら申し訳ございません。

みんなの回答

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.4

ご要望どおりののものを回答したのですが、返答ありませんね。 回答内容がわからないとかでしたら、どの部分とかおっしゃっていただけたらと。

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.3

こちらこそ、申し訳ありません。 ただ、いまだに理解できないのは出来上がってしまっているものの シート名を変える意図です。 例えばアンケートなど多数にこれから配布予定の、シート名が適切で なかったというようなケースとか。 まず、以下を名簿ブックの標準モジュールに貼り付け実行して、Sheet2にファイル名を取得します。(同一ディレクトリの保存のこと) Sub getname() Dim s As String s = Dir(ThisWorkbook.Path & "\*.xls", vbArchive) While s > " " If s <> ThisWorkbook.Name Then Sheet2.Range("a10000").End(xlUp).Offset(1, 0).Formula = s End If s = Dir() Wend End Sub 次にSheet1の右クリックからコードを表示して以下を 貼り付ければ期待の動作はするかと。 責任はもちませんけどね。 Private Sub Worksheet_Change(ByVal Target As Range) Dim ro As Integer, wb As Workbook If Target.Column = 1 Then If Target.Row < 6 Then ro = 1 Do Application.StatusBar = ro & "件目 シート名変更中" Set wb = Workbooks.Open(ThisWorkbook.Worksheets(2).Cells(ro + 1, 1).Text) wb.Worksheets(Target.Row).Name = Target.Text wb.Save wb.Close ro = ro + 1 Loop Until ThisWorkbook.Worksheets(2).Cells(ro + 1, 1).Text = "" Application.StatusBar = "" End If End If End Sub

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.2

>一つ一つのブックを変更することはできませんので これの理由を明らかにされることが第一歩かと思います。 ブックを開くという事は単にセルへのアクセスと比較して数百倍以上の時間を要して実用的でないことは、はなから明白とおもいますから。 つまりご要望の実現はけして無理なことではありませんが、無駄なことに労力を費やすことは、コンピュータを何のために使うのかという根本的発想に逆行していると思いますので。

20090108
質問者

お礼

一つ一つのブックを変更することができない理由は、一つ一つのブックが既に“完成されたもの”であるからです。 「できてしまっているから変更したくない」ではなく、「これ以上贅肉を削げない状態」なのです。 私の説明が不十分でした、すみません。

20090108
質問者

補足

構想に関しては、社の問題ですのでここで議論は避けたいと思っていますのでよろしくお願いします。 「シート名が一括で変更できるかどうか、可能ならその方法を行う」。ここでの質問はこれに止めたいと思っております。困難であれば手作業で行っていく次第です。 お心遣いありがとうございます。

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.1

期待される答えではないのですが一つの命題で三千のブックという時点で基本構想の致命的な構造誤りが疑われます。 一つのシートには(2003の場合で)1600万セルがあり、1ブック1シートでも500億セルも使った処理って普通ではありません。 三千は行に割り当て、構想を再構築できませんか?

20090108
質問者

お礼

回答ありがとうございます。 “シート名”を変更する処理を行うことは、同時に全てのセルへの処理を行うことになってしまうということでしょうか。 「“名簿”というブックのA1セル」に打ち込んだ文字が「他のブックのシート名にリンクされる」という処理と考えていたので、ブック間のリンクの感覚でいました。シート名にはセルのようなリンク機能がなさそうなので残念です。 基本構想の欠陥だとは思いつつも、一つ一つのブックを変更することはできませんので、他の回避方法も無い状態です。 一括で変更できる方法があれば便利だと思ったのですが、難しいようであれば、変更しなくてはならない時期がきたら社員50名程で手分けをして手作業で変更をするようにします。

関連するQ&A

専門家に質問してみよう