• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「.Name」がエラーになる理由は?)

エラー理由と解決方法

このQ&Aのポイント
  • 「全てのシート名を取得する」プロシージャーは正常に動作しますが、「全てのブック名を取得する」プロシージャーはエラーが発生してしまいます。
  • エラーメッセージは「コンパイルエラー メソッドまたはデータ メンバが見つかりません。」 (Error 461) です。
  • このエラーは、.Name プロパティが Workbooks オブジェクトに存在しないために発生しています。全てのブック名を取得することはできません。

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

  • ベストアンサー
回答No.1

Workbooksオブジェクトがあるが、こいつにはNameプロパティがない。 http://msdn.microsoft.com/en-us/library/office/bb225771%28v=office.12%29 WorkbookオブジェクトにはNameプロパティがあり、こちらが正解。 http://msdn.microsoft.com/en-us/library/office/aa224504%28v=office.11%29.aspx つまり、 Sub hoge() Dim wb As Workbook 'こっちはWorkbooksじゃなくてWorkbook For Each wb In Workbooks Debug.Print wb.Name Next End Sub ってこと

VLVPMONTV
質問者

お礼

変数の宣言の時に「s」を付けてしまったのが間違いの原因だったようですね。 ありがとうございました。大変参考になりました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

sub シートの巡回() dim w as worksheet for each w in worksheets 「ワークシーツ」コレクションオブジェクト(1冊のブックに含まれている全シートの集合)の中から、for eachで「ワークシートオブジェクト」(1枚のワークシート)を巡回しているので正解。 sub 正しいブックの巡回() dim wb as workbook for each wb in workbooks 「ワークブックス」コレクションオブジェクト(開かれているブックの集合)の中から、for eachで「ワークブックオブジェクト」(1つずつのブック)を巡回するのが正解。

VLVPMONTV
質問者

お礼

やはり変数の宣言時の「s」が余計だったようですね。ありがとうございました。

関連するQ&A

専門家に質問してみよう