[[20110923214136]] 『オブジェクトが必要です、のエラー』(バーバラ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オブジェクトが必要です、のエラー』(バーバラ)

 またお世話になります。WinXP,Excel2007です。

 下記のコードのココの部分で次のエラーがでます。
 「実行時エラー424.オブジェクトが必要です」
 Rowのオブジェクトがないと言っているのでしょうか?
 どこを修正すればよいか教えていただけないでしょうか。

 Sub Sample()

    Dim Wb1 As Variant, Wb2 As Workbook
        Wb1 = "C:\AAA\BBB\・・・\CCC.xls"
        Set Wb2 = ThisWorkbook

    Dim lastRow As Long, lastRow2 As Long
        lastRow = Cells(Rows.Count, "D").End(xlUp).Row
        lastRow2 = Wb1.Worksheets("CCC").Range("A2").End(xlDown).Offset(-1, 0).Row-->ココ	

    Wb2.Range("A2:A" & lastRow).Value = Wb1.Worksheets("CCC").Range("D2:D" & lastRow2).Value

 End Sub

 Wb1 は文字列なのでそれではアクセスできません。
 Set Wb1 = Workbooks.Open("C:\AAA\BBB\・・・\CCC.xls")
 としてください。
 (Mook)

 こんにちは。

 コードを読むときは、「.」は「の」と読み替え、「=」は「は」と読み替えます。
 するとだいたい意味がとれます。

 このコードだと
 > lastRow2 = Wb1.Worksheets("CCC").Range("A2").End(xlDown).Offset(-1, 0).Row-->ココ 
 lastRow2 =          lastRow2は
 Wb1.                Wb1(というブック)の
 Worksheets("CCC").  CCCシートの
 Range("A2").        A2セルの
 End(xlDown).        End(xlDown) (Ctrlキー+↓キーで移動するセル)の
 Offset(-1, 0).      いっこ上の
 Row                 行番号

 こうなるはずのところ、Wb1が「"C:\AAA\BBB\・・・\CCC.xls"」という文字列なので
 (つまり "あいうえお"の中のCCCシートのA2セルの、と書いているのとおなじこと)
 エクセル君は「Wb1という文字列の中にCCCというシートオブジェクトがありません」と返事をしたのが
 このエラーメッセージです。

 > どこを修正すればよいか
 Wb1をWorkbook型で宣言し、Workbookを代入する。
 コードで書けば
 Dim Wb1 As Workbook
 Set Wb1 = Workbooks.Open"C:\AAA\BBB\・・・\CCC.xls"

 ちなみに、Wb1をちゃんとWorkbook型で宣言していれば、
 うっりsetをつけ忘れ(文字列の代入になる) ても、その行でエラーがでるので、
 原因が特定しやすい。
 Variant型での宣言は出来る限り避けるべきです。


 Mookさん
 ご回答ありがとうございました。できました!
 メソッドがくっついているWorkbookを変数にできるんですね。。

 Wb2.Range("A2:A" & lastRow).Value
 →ココでエラーが出ましたが、Worksheetsが抜けていました。
 これは自力で見つけることができた。。。

 お名前わかりませんが、
 >Variant型での宣言は出来る限り避けるべきです。
 そうですねー。今後は気をつけます。

 > エクセル君は「Wb1という文字列の中にCCCというシートオブジェクトがありません」
 >と返事をしたのがこのエラーメッセージです。
 そっちでしたか。Rowではなかったのですね。
 ありがとうございました。よくわかりました。 
 (バーバラ)


 せっかくきちんと説明されているのですから、マナーを守って名前を書きませんか。
 どんなに一生懸命に見えても、ハンドルがなかったり初心者を名乗る方は、
 無責任な発言に見えてしまいます。

 だからという突込みではないですが、
 Set Wb1 = Workbooks.Open"C:\AAA\BBB\・・・\CCC.xls"
 は
 Set Wb1 = Workbooks.Open("C:\AAA\BBB\・・・\CCC.xls")
 としないと動かないですね。
 (Mook)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.