VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2007/06/06(Wed) 17:30
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe: 「オブジェクト変数または With ブロック変数が設定されていません。」というエラーが出てしまいます。

>     Set XLSBook = CreateObject("excel.application.10")
変数名に Book という名前が付いていますが、ここで得られるオブジェクトは、
Excelブックをあらわすオブジェクト(Workbookオブジェクト)ではなく、
Excel本体をあらわすオブジェクト(Applicationオブジェクト)ですよ。

>     With XLSBook.Application
すでに Application オブジェクトを取得済みですので、今回のコードで
Application プロパティを利用することは無意味かと思います。

上記の場合、「XLSBook」「XLSBook.Application」「XLSBook.Application.Application」は
同一のオブジェクトを参照することになりますので…。

>         Fname = C:\Documents and Settings\User1\My Documents\book1.xls
誤記とは思いますが、両端を「"」で囲まないと。

>         .Workbooks.Open (Fname)
括弧は不要です。付けたいのであれば、Call ステートメントを併用しましょう。

>                 row1 = .Range("A:A").Find("Start", lookin:=xlValues).Row
Find メソッドは、一致するデータが見つからなかった場合に Nothing を返しますので、
Set x = 〜.Find(…)
If x Is Nothing Then
 '見つからなかったときの処理
Else
 row1 = x.Row
End If
のようにすべきでしょう。

> タイトルのエラーメッセージが表示され、
Nothingすなわち、オブジェクト自体が存在しない状態であれば、そうなるでしょうね。
存在しないオブジェクトの Row プロパティを得ることはできませんし。


>                 .Range(Cells(row1, 2), Cells(row2, 2)) = num
『Cells』ではなく、『.Cells』です。
ドットが抜けていると、どのシートのセルを参照しているのかが曖昧になり、
幾つかの弊害を引き起こします。
http://hanatyan.sakura.ne.jp/vbhlp/ExcelErr.htm


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -