C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Excelの名前定義(2007)


(過去ログ 24 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■10876 / inTopicNo.1)  Excelの名前定義(2007)
  
□投稿者/ kazu (8回)-(2007/11/29(Thu) 11:25:27)

分類:[Microsoft Office 全般] 

Excel2007のマクロ機能で名前定義を追加するプログラムを
作成しています。

最初にシート単位の名前定義を追加して、
そのあとに同一名でブック単位の名前を追加した場合に
ブック単位の名前が追加されないでシート単位の名前定義が更新されてしまいます。
シートを追加・削除した後に実行すると正常に追加されるのですが、
シートを追加・削除しなくても正常に追加する方法は
あるのでしょうか?

↓(失敗するパターン)
--------------------------------------------------------
ActiveWorkbook.Names.Add Name:="Sheet1!NewName", RefersToR1C1:="=TEST!R8C6"
ActiveWorkbook.Names.Add Name:="NewName", RefersToR1C1:="=TEST!R8C4"
--------------------------------------------------------

↓(成功するパターン)
--------------------------------------------------------
Dim obj As Excel.Worksheet

Set obj = ActiveWorkbook.Sheets.Add()

ActiveWorkbook.Names.Add Name:="Sheet1!NewName", RefersToR1C1:="=TEST!R8C6"
ActiveWorkbook.Names.Add Name:="NewName", RefersToR1C1:="=TEST!R8C4"

obj.Delete
--------------------------------------------------------

引用返信 編集キー/
■10878 / inTopicNo.2)  Re[1]: Excelの名前定義(2007)
□投稿者/ 魔界の仮面弁士 (538回)-(2007/11/29(Thu) 12:47:57)
No10876 (kazu さん) に返信
> ↓(失敗するパターン)
> --------------------------------------------------------
> ActiveWorkbook.Names.Add Name:="Sheet1!NewName", RefersToR1C1:="=TEST!R8C6"
> ActiveWorkbook.Names.Add Name:="NewName", RefersToR1C1:="=TEST!R8C4"
> --------------------------------------------------------
> ブック単位の名前が追加されないでシート単位の名前定義が更新されてしまいます。

その場合、
 ActiveWorkbook.Names(1).RefersToR1C1 →  =TEST!R8C6
 ActiveWorkbook.Names(2).RefersToR1C1 → =TEST!R8C4
になっているだけで、.Names(1) が更新されているわけではないようです。

問題は名前解決の方で、
 ActiveWorkbook.Names("Sheet1!NewName").RefersToR1C1 → =TEST!R8C6
 ActiveWorkbook.Names("NewName").RefersToR1C1        → =TEST!R8C6 ★
のようになってしまいますが、これはおそらく、
 「"NewName"という名前を持った中で、先に登録されている方」
が優先して検索されてしまうのでしょう。


> シートを追加・削除しなくても正常に追加する方法は
> あるのでしょうか?
シート単位の名前定義を行うより前に、ブック単位の名前定義を行えばよいかと。

引用返信 編集キー/
■10879 / inTopicNo.3)  Re[2]: Excelの名前定義(2007)
□投稿者/ kazu (10回)-(2007/11/29(Thu) 12:58:43)
魔界の仮面弁士さん、ご回答ありがとうございます。

既存でシート単位の名前が登録されている場合が存在するので
ブック単位を必ず先に登録することができないので、悩んでいます。


引用返信 編集キー/
■10988 / inTopicNo.4)  Re[3]: Excelの名前定義(2007)
□投稿者/ 特攻隊長まるるう (99回)-(2007/12/03(Mon) 20:07:51)
No10879 (kazu さん) に返信
検索して覚えておいて、削除して登録しなおすのはできないのでしょうか?

・・・それ以前に、名前がかぶっている時点で動作に不都合が起きるのだから、
警告を出して処理しないようにするべき場面だと思いますが。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -