シート名が重複した場合の処理方法とは?

このQ&Aのポイント
  • Excel2010を使用している場合、他のブックから移動させてきたシート名が重複した場合の処理方法について知りたいです。現在の処理では、重複したシート名には(番号)が追加されますが、逆の状態にするための方法を教えてください。
  • 現在、Excel2010で他のブックから移動させてきたシート名が重複すると、自動的にシート名に(番号)が追加されますが、逆の状態に戻したいと思っています。例えば、<1111><1111 (2)><1111 (3)>のようになっている状態を、<1111 (3)><1111 (2)><1111>のように戻したいです。どのようにすれば良いですか?
  • Excel2010で他のブックから移動させてきたシート名が重複すると、自動的にシート名に(番号)が追加されますが、逆の状態にする方法を教えてください。現在の状態は<1111><1111 (2)><1111 (3)>ですが、<1111 (3)><1111 (2)><1111>に戻したいです。VBAでの対処方法があれば、初心者でも理解できるように教えてください。
回答を見る
  • ベストアンサー

シート名が重複する場合の処理について

Excel2010を使用しています。 シート<例:1111>を他のブックから移動させてきた際、 シート名が重複していると自動的にシート名+(番号)が与えられ、 <1111 (2)>と、さらに同じシート名を移動させてくると<1111 (3)>と処理されますが、 これを逆の状態にするにはどのようにすればよろしいのでしょうか? 現在の状態 古<1111><1111 (2)><1111 (3)>新 理想の状態 古<1111 (3)><1111 (2)><1111>新 シート番号を参照して処理を行うので、常に新しく移動させてきたシートが <1111>の状態であって欲しいのです。 もしVBAで対処できるのであれば、初心者なので、優しくお願いします。 どなたかご存知の方、ご教授ください。 よろしくお願いいたします。

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

  • ベストアンサー
  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

>>これを逆の状態にするにはどのようにすればよろしいのでしょうか? 「逆の状態」になるよう、処理を「作れば」いい。 >>シート<例:1111>を他のブックから移動させてきた際、 >>シート名が重複していると自動的にシート名+(番号)が与えられ、 >><1111 (2)>と、さらに同じシート名を移動させてくると<1111 (3)>と処理されますが、 シートを他のブックから移動させて来る前に 移動させるシートの名前をチェックして 移動後のブックにも同じシートがあるなら そのブックのシートを「1111(2)」に変更して そのあとで移動させたいシートを移動させる ような処理を作ればよいです。 履歴管理も必要とのことなので 「1111(2)」「1111」がある状態の場合には 古いシートから順番に、さらに大きな番号に付け替えを行うような 処理もあわせて作る必要がありますね。 後は、「1111(2)」「1111(3)」のように、EXCEL側が勝手につけてくれる名前 を基にしてマクロ組むと、後々面倒な事になりかねない気はするので、 「1111[2]」「1111[3]」のような、プログラム側が履歴管理のためにやった事ですよ~ というような事が分かるよう、ちょっと変えておく事をおススメしておきます。

yamayama456
質問者

お礼

STICKY2006さん、早速の回答ありがとうございます。 貴重なヒントになりました。 でも、実際どんなプログラムを作ればよいか、、、 ちょっとまだハードルが高いので、引き続き、ご回答お待ちしております。 よろしくお願いいたします。

yamayama456
質問者

補足

シートは1111だけではなく、2222・3333・・・とたくさんあります。

その他の回答 (3)

  • CC_T
  • ベストアンサー率47% (1038/2201)
回答No.4

発想の転換したほうが簡単でしょう。 『処理が終わったら、<1111&日付>などにシート名を変更』としておけば、常に持ってきた<1111>シートに対して処理が行えます。ついでに言えばバックアップは別のブックにしたほうが作業ファイルの容量が減っていいと思いますけどね。

yamayama456
質問者

お礼

バクアップのアドバイス、ありがとうございます。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

発想の一つのヒントとして、簡単に流れを・・ その前に、人力で、手動でやるとしたらどうしようと思いますか? 「あ、同じ名前のシートがあるわぁ。  じゃ、もともとのシート名を変更して、  改めてコピーするかぁ。」 と言う判断と作業をしますよね。 これをマクロにしてやるだけです。 転記先のブックを「あ」、転記元のブックを「A」とします。 シート名変更後の古いシート名を「1111_数字」とします。 (「_」を使うのは個人的な趣味です。) 転記してきたばかりの最新のシートの名前は数字が常に「1」にするように考えます。 (つまり最新は「1111_1(ただし半角)」となるようにします) そうすると ・ブック「A」から転記したいシートを選択、シートの名前を変数に代入  きっと「アクティブなシートを」が一番やりやすいでしょうね。 ・ブック「あ」に変数に代入された数字を含む(1111を含む)シートが有ったら  「_数字」を「_数字+1」に変更する(Mid・Lenなどが便利かな) ・「A」の「1111」シートを「あ」に転記し、シート名を「1111_1」に変更 ごく簡単にこんな流れでしょうか。 何やら今までの回答の流れから、とりあえずヒントだけ。 少~し、考えてみましょうね^^;

yamayama456
質問者

お礼

確かに、皆さんヒントくださるんですが、 私の実力ではまだ形になってません。。。初心者なんで^^; Mid・Len ですね! 考えてみます。 ありがとうございます。

回答No.2

新しいブックに順序を考えて移動させる。 これをVBAでナントカする、、、

yamayama456
質問者

お礼

なるほどですね。 発想は湧いてきました! VBAでナントカする、、、が厳しいです><・

関連するQ&A

  • エクセルのシート名変更で重複した時のvbaの処理

    こんにちは。vba初心者です。 セルのA1を参照してシート名を変更するとき 名前が重複したら、A1に入力されている文字列の後に(2)とつけたいのですが、 その重複したときの処理ができません。 シート名を変更するところまではできました。 以下のvbaです。 Sub test() Dim aSheet As Worksheet For Each aSheet In Worksheets aSheet.Select aSheet.Name = Range("A1") On Error Resume Next Next aSheet End Sub これに付け加えるか全然違ってもかまいません。 何かよい方法を教えてください。 説明が不十分かもしれませんが、よろしくお願いします。

  • Excelでブック名とシート名の取得方法は?

    Excel2000のVBAで、そのパソコンで開いている全てのEXCELブック名とそれらにあるシート名を取得したいのですが、そんなことはできるのでしょうか?

  • VBAでシートコピー後、シート名が重複している時の処理

    今日からVBAを勉強し始めました初心者です。会社である作業をしており、VBAでの作業がうまくいかなくて困っております。 「実績」というシートを11/5に作ったとします。 このシートを、11/9にマクロを実行した時に、   ・11/5のシートをコピーし複製を作る(この時点ではシート名は「実績(2)」)   ・この時、シート名は「11-05」となるように設定済み    (実績シートの「G1」セルから、日付を取得しファイル名とする) としています。 この時、まれに同じ日に間違ってマクロを動かす為、同じシート名となりエラーが出てしまいます。 利用者が不慣れなため、エラーの対処方法を教えることでは対処が難しい状態で、できればマクロで対応しようと思っています。 以下、シート名が重複しない場合のみ利用可能なデータです。 '前回作成した「実績」のコピー&リネーム Dim mySheet As Worksheet Set mySheet = ActiveWorkbook.Worksheets("実績") mySheet.Copy after:=Worksheets("実績")   '実績sheetの後ろにコピー ActiveSheet.Name = Format(Range("G1").Value, "m-dd") ' シート名を変更する 他の質問を検索しましたが、コピーしたファイルをリネームし、 そのリネーム結果が重複している場合の記述方法がよくかわりませんでした。 重複している場合は、できればメッセージボックスで「yesno」の選択で上書きの選択ができればと思っています。 (VBAでは一度削除してから新規に作るようですが、上の重複のからみで、よくわからなくなっています) よろしくお願いします。

  • エクセルVBAの処理でブックの中に複数のシートがあり、そのシート名と同

    エクセルVBAの処理でブックの中に複数のシートがあり、そのシート名と同じ名前の他のブックにそのシートを順々に挿入していきたいのですがどうすればよいのでしょうか。 宜しくお願い致します。

  • Excelでのシート間でのセルの重複を知りたいのです

    Excel2000です。 或るブックの中に2枚のシートがあって、 それぞれA列にはたくさんの日本語の言葉が入っています。 例えば A1には「こんにちは」 A2には「さようなら」 A3には「それでは、さようなら」 ・・・ という感じに、何百・何千もの言葉が書かれています。 (A列以外は空) 1枚目のシートと2枚目のシートには、同じ言葉があり、 その重複をとりたいのです。 重複しているかどうかは、セル単位で考えます。 (「さようなら」と「それでは、さようなら」は別の言葉です。) しかし、(重複していた場合に)その言葉を1枚目のシートと2枚目のシートのいずれかに置くかの判断は、 自動で行うことはできず、人(私)がしなくてはなりません。 そこで、「この言葉は2枚のシートの両方にある!」ということを知りたいのです (例えば、セルに色をつけてくれるとか) が、どうすればよいでしょうか。 なお、シート内での言葉の重複もとらなければならないのですが その方法は既に判明しているので、 シート内での重複はないものとお考えになってもかまいません。 「一度、新しい別のシートに2枚のシートにある言葉をすべて移して、 その新しいシート内で重複をとって、 私が元の2枚のシートのいずれに入れるか判断する」 という方法もあるのですが、 多くの言葉は既に2枚のシートに正しく分かれているので、 「今更混ぜたくない」と思っています。

  • Excel2013名前の定義。範囲でブックかシート

    Excel2013名前の定義。範囲でブックかシートかを選ぶことができますが、既に参照範囲で名前をつけたい範囲を選択しているのになぜ、ブックかシートかを選ばないといけないのでしょうか。

  • Excel2000 VBAで新規シート名を他のシート名と重ならないようにつけるには?

    始めまして。早速ですが、今頭を抱え込んでいる私の悩みを聞いて下さい。 シート名を追加するプログラムで、「シートを追加」というボタンを押すと、 Inputboxを表示し、そこに任意の番号("見積書1"や"請求書1"の数字部分)を入力して、その番号をシート名として取得すると同時に、シートを追加するようにしたいのです。 その過程で、新しいシートの名前をつける際に、同じブック内に既に存在する複数 のシート名と照らし合わせて、もし、既存の番号と同じ番号をInputBoxに入れたときには、「他の番号を入力してください」と再度InputBoxを表示させたいのです。 そして、シート名がブック内に同じものがない場合にのみ、シートを追加するというものです。 VBAを使うより、手動ですれば?という考えももちろん解決方法の一つかとは思いますが、何分Excelを始めて使う年老いた父のために、少しでも簡単に操作できるようにという思いから質問させて頂いております。 どうぞよろしくお願いいたします。

  • 【VBA】EXCELブックを開かずにシート名を取得したい

    VBAに関する質問です。 EXCELブックを開かずに、シート名を取得する方法を教えてください。 http://officetanaka.net/excel/vba/tips/tips29.htm ↑を見たのですが、具体的にどのようにしたらよいのかわかりません。 よろしくお願いします。

  • EXCEL VBA n番目のシートの内容を参照した

    EXCEL VBAについて教えてください。 別のブックのシートのセルを直接参照したいのですが、 シート名が、決まっておらず、必ず4番目のシートを参照したいです。 以下のようなVBAの シート名をSheets(1)のような、決まったインデックス番号で指定にしたいのですが、どのように指定すればよいでしょうか? Range("A1") = "='e:\Temp\working\[book1.xls]シート名'!A1"

  • Excelのシート移動

    初めまして。エクセル超初心者です。  早速ですが、ここにBook1とBook2の二つのブックがあるとします。Book1で現在参照しているSheetをBook2の例えばSheet2の前に移動、というマクロ(VBA?)を作成し、ボタン一つで移動するようにしたいのですが、どの様にすればよいのでしょうか。お教えください。

専門家に質問してみよう