• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:captionの値と実際の表示名が合わない)

Excel2010でcaptionと表示名の不一致について

このQ&Aのポイント
  • Excel2010のwindowsオブジェクトのcaptionと表示名が一致しない問題について質問です。具体的には、wd.Captionの値とエクセルで表示される名前が異なることを確認しています。
  • wd.Captionの値を確認したところ、[GIP]エクセルシート・・・.xlsと表示されるべき部分が(GIP)エクセルシート・・・.xlsと表示されています。
  • エクセル内のウィンドウの左上に表示される名前は[GIP]エクセルシート・・・.xlsですが、なぜcaptionの値だけが違っているのかわかりません。何か制約事項があるのでしょうか。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 この件の問題点は、不適切なブック名にあります。 決してバグではありませんし、VBAというよりは、Excelの仕様に関わります。 ファイル名はユーザーの好き勝手に付けられるものではなくて OS:オペレーティングシステム Excel:アプリケーション それぞれに命名規則があるということはご理解頂けるものと思います。 この場合は、Excelのブック名には用いることの出来ない文字 "["と"]"が使われていることが問題になります。 Excelにとって角括弧は、数式上で別のブックを参照する際に、 [ブック名]のように表記し、「角括弧の内側にブック名を記してある」 というように、特別な意味を持つ記号です。 実際、XL2010で、新規のブックを[名前を付けて保存]する際に、 [GIP]エクセルシート.xls という名前を指定しようとすると、警告ダイアログが表示されて  ファイルにアクセスできませんでした。次のいずれかを行ってみてください。  ・ 指定したフォルダがあることを確認します。  ・ ファイルを含むフォルダが読み取り専用になっていないことを確認します。  ・ 指定したファイルの名前に次のいずれかの文字も含まれていないことを確認します : < > ? [ ] : | *  ・ ファイル名およびパス名が半角で 218 文字より長くないことを確認します。 と表示されます。 つまり、角括弧を使ったブック名を指定して保存することを禁じています。 ブック名に角括弧を指定できるのは、エクスプローラから直接ファイル名を書き換えた場合になります。 [GIP]エクセルシート.xlsと名前を変更したなら、ブックを開くことも参照することも可能ですが、 他のブックから数式で参照する場合でも、 ='[(GIP)エクセルシート.xls]Sheet1'!A1 のように、別のブックを参照していることを示す角括弧と明確に区別をする意味で、 ブック名にある角括弧[]を括弧()に置換して表示することになります。 そうしなければ、システムとして正常に機能しない、ということは、理解できると思います。 ウィンドウのキャプションは、 表示する文字列自体が何らかの制御に関連付けられている訳ではありませんから、 忠実に文字列としてのファイル名を表示しますが、 内部的には、制御(約物)記号である角括弧[]を括弧()に置換しています。 以上の理由から、ご提示の記述については、 アプリケーションの仕様に合わせる形で、 wName="(GIP)エクセルシート" のように括弧()に置換した上で検索するしかありません。 尚、 [GIP]エクセルシート.xls というブックと (GIP)エクセルシート.xls というブックとをExcel2010は判別しませんし、 同時に開くこともできません。 また、 [GIP]エクセルシート.xls というブックをそのままの名前で上書き保存することは出来ますが、 他のフォルダ等に同じ名前で[名前を付けて保存]しようとしても、 候補として表示されるのは、 (GIP)エクセルシート.xls になります。 私からの説明としては以上です。 納得いかない面もあるかと思いますが、何分にも仕様上のことですので ありのまま理解につとめてくださいませ。⁓

kyolly
質問者

お礼

丁寧な説明ありがとうございます。 該当ブックを保存したのが自分ではないために、エクセルから保存したのか、エクスプローラからファイル名だけを変更したのかわからない(恐らくは後者)のですが、エクセルの仕様であるということがはっきりしただけでOKです。 何らか判定、取得方法が間違ってるかと思ったので質問させて頂きました。 []を()で読み替えるようにしたいと思います。

その他の回答 (1)

回答No.2

こんばんは。 >[GIP]エクセルシート・・・.xlsと >表示されてるのですが、何故かcaptionの値だけ違っており、見つけることができません。 >何か制約事項があるのでしょうか。 基本的には、ファイル名の規則として、Excelでは、[] 角括弧は使えないはずです。それは、#1さんが書いているとおりですが、ただ、正直なところは、意図的にCaptionを変えているとか、そのあたりは、ご質問者側の事情だろうし、それを質問されても、こちら側では分かりません。 >Excel2010で以下のようにwindowsオブジェクトのcaption判定をしているのですが、 もうひとつは、マクロをみると、ファイル(ブック名)名を検索しないで、Window のCaption名を検索するのはなぜか、今ひとつ理解できません。ありえないコードはあるものの、一般的ではありません。ExcelのWindow は、一つのブックにいくつも存在するものですから、通常、Workbooks で、ループして、その中でNameを取るなどします。キャプションを取るのは、コントロール・オブジェクトがほとんどです。(ただし、私個人は、違う書き方をすることもあります。) 後は、お決まりなのですが、 >For Each wd In Windows ではなく、WorkbookのWindowのCaption を探すのではないかと思います。 元のマクロとおなじようでいて、違います。 For Each wb In Workbooks で、wb.Windows(1).Captionを取るなり、Book名を取るなり、どちらかだと思います。(wd は、Word と見間違うので変えました) >wName="[GIP]エクセルシート" 調べるのでしたら、最初に、ローカルウィンドウやマクロでキャプションやブック名で、名前の確認を取ってからでもよいのではないでしょうか? 別に、こちらの書いた内容を無視しても構いませんが、もし、その事情が正しいなら、別なマクロが最初に動いているかもしれません。 少なくとも、今のところ、「、”[]”が”()”に変わってました」という再現性が得られませんでした。

kyolly
質問者

お礼

ご回答ありがとうございます。 >ファイル(ブック名)名を検索しないで、Window のCaption名を検索するのはなぜか、今ひとつ理解できません。ありえないコードはあるものの、一般的ではありません。 開いているファイルを検索するのにWindowsを使いましたが、これは一般的ではないのですね。 勉強不足ですね。ご指摘ありがとうございます。

関連するQ&A

専門家に質問してみよう