![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Excelの、WorksheetオブジェクトのCodeNameについて。シートコピー時のコード名の変化が、バージョンごとに違うんでしょうか?
ExcelのシートAのコード名がSheet1だったとします。シートAをコピーしたシートA01のコード名ですが、
(1)Excel2010でやったら、A01のコード名は「Sheet2」になるようだ。
(2)しかし古いバージョンでやると、A01のコード名は「Sheet11」になるようだ。
実はExcel97でやると(2)のようになったのですが、これは避けられないのでしょうか?
A01をコピーしてA02を作り(古いAは捨てる)、A02をコピーしてA03を作る(古いA01は捨てる)・・・ということを日常業務においてしたいのですが、古いバージョンだとコード名が「Sheet11」、「Sheet111」、「Sheet1111」、・・・「Sheet11111111111」と馬鹿みたいに長くなります。そして、この長さを原因として、そのうちシートコピーが出来なくなってしまいます。これは避けられないのでしょうか?
No.2ベストアンサー
- 回答日時:
>ページ設定情報とかいろいろ機能を入れてるシートなので、そのままコピーして使いたいのですがね。
そうですね。それなら、
> origSheet.UsedRange.Copy ' UsedRangeをコピー
origSheet.Activate
Cells.Copy
newSheet.Activate
newSheet.Paste
で、機能的にもコピーされるはずです。これ自体は問題ないと思います。
>CodeNameをマクロから直接書き換えようとしたこともありますが、やはり危険なようです。
別に、危険ということではなく、知っている人には、そういうコードは、疎ましいだけです。まして、97のVBAは、今というよりも、Excel2000以降とはちょっと違う部分があるし、いまさら、Excel 97の脆弱性について、考えなくてはならないのは頭の痛いことだと思います。
No.1
- 回答日時:
>WorksheetオブジェクトのCodeNameについて。
シートコピー時のコード名の変化が、バージョンごとに違うんでしょうか?https://support2.microsoft.com/default.aspx?scid …
「Excel 2000以降で読み込み中に、'Sheet11111...'というエラーが発生します」
(You receive an "An error occurred while loading 'Sheet1111111111111...)
のことだと思います。ただ、未だ、Excel 97 をお使いで、それを継続するということでしょうか。
リンク先には、対処法として、
「このような問題を防ぐためには、現在お使いのVBAマクロを以下に沿ってマクロコードを使ってください。以下のプロシージャは、組み込みのマクロコマンドActiveSheet.Copyの代わりに、Sheets.Add を使い、元のシートの情報を新しく作られたシートにコピーをします。このメソッドは、異なる命名規則を使っているので、問題は避けられます。」(私訳)
Sub CreateNewSheet()
Dim origSheet As Worksheet
Dim newSheet As Worksheet
Set origSheet = ThisWorkbook.ActiveSheet
Set newSheet = Sheets.Add '新しいシートを加える
origSheet.Activate ' コピー元のシートに戻る
origSheet.UsedRange.Copy ' UsedRangeをコピー
newSheet.Activate ' 新しいシートに移動
ActiveSheet.Paste ' コピー元の情報の貼り付け
End Sub
なお、そうなってしまった場合の正しいオブジェクト名(CodeName)の直し方もありますが、Excel97は、出来るなら使用は避けたいところです。
信じられないでしょうが、今の職場ではExcel97が大半のパソコンで使われており、このような問題に直面しています。
やっぱり呈示いただいたマクロのように、シートをコピーするのでなく新規追加するしかないのでしょうかね。ページ設定情報とかいろいろ機能を入れてるシートなので、そのままコピーして使いたいのですがね。CodeNameをマクロから直接書き換えようとしたこともありますが、やはり危険なようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Excel(エクセル) Excel VBA 指定セルに入力されているパスからシートをコピーして別のブックに転記するVBAのコ 2 2022/04/19 15:53
- Visual Basic(VBA) 2つの条件が一致したら一覧へコピーしたい。 左から4番目以降のシート名にコードが入ったシートを全て、 5 2022/09/20 19:41
- Excel(エクセル) 複数のExcelブックのシート1の内容を1つのExcelブックにコピー貼り付けたいのでvbaコードを 7 2023/02/10 23:20
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 【部分一致した行を含む8行をシートにコピーする方法】 以下のような作業を行いたいのですが、どなたがコ 1 2022/08/30 16:24
- Excel(エクセル) vba アクティブシートのA1セルの値を基準に複数のシートコピー&シート名を 6 2023/04/12 18:36
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
PDFファイルをコピーしてエクセ...
-
エクセルの1シートの内容を複...
-
エクセルのページをシートごと...
-
Excel シートのコピーの際、ペ...
-
Excelの行をコピーして貼り付け...
-
【Excel】数式をそのまま他のシ...
-
EXCELのVBAでシートコピーをし...
-
VBA シートをコピー後、ボタン...
-
【エクセル】プルダウン設定の...
-
エクセルのシートコピーで名前...
-
【VBA】コピー&複数個所のペー...
-
ExcelのVBAで、application.inp...
-
Excel シートコピー時のコード...
-
シートのコピーとMsgbox無効化
-
EXCELファイルをコピーすると終...
-
エクセルVBAですが教えてくださ...
-
Excel シートに別のExcelシート...
-
Excel:マウスのドラッグ操作で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
Excelの行をコピーして貼り付け...
-
【Excel】数式をそのまま他のシ...
-
EXCELで別のブックから式をコピ...
-
【VBA】コピー&複数個所のペー...
-
エクセルの1シートの内容を複...
-
エクセルシートを別のエクセル...
-
PDFファイルをコピーしてエクセ...
-
CSVファイルについて質問です。
-
Excel 数式の保護をしたセルを...
-
【エクセル】プルダウン設定の...
-
【Excel VBA】シートコピー時、...
-
VBA シートをコピー後、ボタン...
-
エクセルVBA 1行飛ばしで転記す...
-
Excel シートのコピーの際、ペ...
-
エクセルで、開くのに時間のか...
-
Excel シートに別のExcelシート...
-
エクセルでシートを「移動また...
おすすめ情報