一回も披露したことのない豆知識

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」と馬鹿みたいに長くなります。そして、この長さを原因として、そのうちシートコピーが出来なくなってしまいます。これは避けられないのでしょうか?

A 回答 (2件)

>ページ設定情報とかいろいろ機能を入れてるシートなので、そのままコピーして使いたいのですがね。



そうですね。それなら、
>  origSheet.UsedRange.Copy ' UsedRangeをコピー

  origSheet.Activate
  Cells.Copy
  newSheet.Activate
  newSheet.Paste

で、機能的にもコピーされるはずです。これ自体は問題ないと思います。

>CodeNameをマクロから直接書き換えようとしたこともありますが、やはり危険なようです。
別に、危険ということではなく、知っている人には、そういうコードは、疎ましいだけです。まして、97のVBAは、今というよりも、Excel2000以降とはちょっと違う部分があるし、いまさら、Excel 97の脆弱性について、考えなくてはならないのは頭の痛いことだと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。考えてみます

お礼日時:2015/07/18 16:18

>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は、出来るなら使用は避けたいところです。
    • good
    • 0
この回答へのお礼

信じられないでしょうが、今の職場ではExcel97が大半のパソコンで使われており、このような問題に直面しています。

やっぱり呈示いただいたマクロのように、シートをコピーするのでなく新規追加するしかないのでしょうかね。ページ設定情報とかいろいろ機能を入れてるシートなので、そのままコピーして使いたいのですがね。CodeNameをマクロから直接書き換えようとしたこともありますが、やはり危険なようです。

お礼日時:2015/07/18 13:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!