- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「.Name」がエラーになる理由は?)
エラー理由と解決方法
このQ&Aのポイント
- 「全てのシート名を取得する」プロシージャーは正常に動作しますが、「全てのブック名を取得する」プロシージャーはエラーが発生してしまいます。
- エラーメッセージは「コンパイルエラー メソッドまたはデータ メンバが見つかりません。」 (Error 461) です。
- このエラーは、.Name プロパティが Workbooks オブジェクトに存在しないために発生しています。全てのブック名を取得することはできません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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 ってこと
その他の回答 (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つずつのブック)を巡回するのが正解。
質問者
お礼
やはり変数の宣言時の「s」が余計だったようですね。ありがとうございました。
お礼
変数の宣言の時に「s」を付けてしまったのが間違いの原因だったようですね。 ありがとうございました。大変参考になりました。