- ベストアンサー
シート名が重複した場合の処理方法とは?
- Excel2010を使用している場合、他のブックから移動させてきたシート名が重複した場合の処理方法について知りたいです。現在の処理では、重複したシート名には(番号)が追加されますが、逆の状態にするための方法を教えてください。
- 現在、Excel2010で他のブックから移動させてきたシート名が重複すると、自動的にシート名に(番号)が追加されますが、逆の状態に戻したいと思っています。例えば、<1111><1111 (2)><1111 (3)>のようになっている状態を、<1111 (3)><1111 (2)><1111>のように戻したいです。どのようにすれば良いですか?
- Excel2010で他のブックから移動させてきたシート名が重複すると、自動的にシート名に(番号)が追加されますが、逆の状態にする方法を教えてください。現在の状態は<1111><1111 (2)><1111 (3)>ですが、<1111 (3)><1111 (2)><1111>に戻したいです。VBAでの対処方法があれば、初心者でも理解できるように教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>>これを逆の状態にするにはどのようにすればよろしいのでしょうか? 「逆の状態」になるよう、処理を「作れば」いい。 >>シート<例:1111>を他のブックから移動させてきた際、 >>シート名が重複していると自動的にシート名+(番号)が与えられ、 >><1111 (2)>と、さらに同じシート名を移動させてくると<1111 (3)>と処理されますが、 シートを他のブックから移動させて来る前に 移動させるシートの名前をチェックして 移動後のブックにも同じシートがあるなら そのブックのシートを「1111(2)」に変更して そのあとで移動させたいシートを移動させる ような処理を作ればよいです。 履歴管理も必要とのことなので 「1111(2)」「1111」がある状態の場合には 古いシートから順番に、さらに大きな番号に付け替えを行うような 処理もあわせて作る必要がありますね。 後は、「1111(2)」「1111(3)」のように、EXCEL側が勝手につけてくれる名前 を基にしてマクロ組むと、後々面倒な事になりかねない気はするので、 「1111[2]」「1111[3]」のような、プログラム側が履歴管理のためにやった事ですよ~ というような事が分かるよう、ちょっと変えておく事をおススメしておきます。
その他の回答 (3)
- CC_T
- ベストアンサー率47% (1038/2202)
発想の転換したほうが簡単でしょう。 『処理が終わったら、<1111&日付>などにシート名を変更』としておけば、常に持ってきた<1111>シートに対して処理が行えます。ついでに言えばバックアップは別のブックにしたほうが作業ファイルの容量が減っていいと思いますけどね。
お礼
バクアップのアドバイス、ありがとうございます。
- tsubuyuki
- ベストアンサー率45% (699/1545)
発想の一つのヒントとして、簡単に流れを・・ その前に、人力で、手動でやるとしたらどうしようと思いますか? 「あ、同じ名前のシートがあるわぁ。 じゃ、もともとのシート名を変更して、 改めてコピーするかぁ。」 と言う判断と作業をしますよね。 これをマクロにしてやるだけです。 転記先のブックを「あ」、転記元のブックを「A」とします。 シート名変更後の古いシート名を「1111_数字」とします。 (「_」を使うのは個人的な趣味です。) 転記してきたばかりの最新のシートの名前は数字が常に「1」にするように考えます。 (つまり最新は「1111_1(ただし半角)」となるようにします) そうすると ・ブック「A」から転記したいシートを選択、シートの名前を変数に代入 きっと「アクティブなシートを」が一番やりやすいでしょうね。 ・ブック「あ」に変数に代入された数字を含む(1111を含む)シートが有ったら 「_数字」を「_数字+1」に変更する(Mid・Lenなどが便利かな) ・「A」の「1111」シートを「あ」に転記し、シート名を「1111_1」に変更 ごく簡単にこんな流れでしょうか。 何やら今までの回答の流れから、とりあえずヒントだけ。 少~し、考えてみましょうね^^;
お礼
確かに、皆さんヒントくださるんですが、 私の実力ではまだ形になってません。。。初心者なんで^^; Mid・Len ですね! 考えてみます。 ありがとうございます。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
新しいブックに順序を考えて移動させる。 これをVBAでナントカする、、、
お礼
なるほどですね。 発想は湧いてきました! VBAでナントカする、、、が厳しいです><・
お礼
STICKY2006さん、早速の回答ありがとうございます。 貴重なヒントになりました。 でも、実際どんなプログラムを作ればよいか、、、 ちょっとまだハードルが高いので、引き続き、ご回答お待ちしております。 よろしくお願いいたします。
補足
シートは1111だけではなく、2222・3333・・・とたくさんあります。