電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
現在、ExcelファイルのデータをAccessに取り込むVBでエラーが起こります。
(問題のおこる部分のみ、ソースを下記に記します。)
★の部分で、「実行時エラー1004 'Worksheets'メソッドは失敗しました:'_Global'オブジェクト」
というエラーが、出ます。
しかも、毎回ではなく、出たりでなかったりします。
これはなぜでしょうか?
定義の指定やappの指定に問題があるのでしょうか。

おわかりになる方がいらっしゃいましたら、ご指導願います。
宜しくお願いします。


---------------------------------------------------
Private Sub 取込み_Click()

'■変数
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim app As Object

Dim iRow As Long
Dim iUsed As Long
Dim iCnt As Long

(中略)

'■接続
Set cn = CurrentProject.Connection
'■Excelアプリの起動及びファイルオープン
Set app = CreateObject("Excel.Application")
app.Workbooks.Open filename:=CurrentProject.Path & "\h.xls"

'■レコードセットの取得
Set rs = New ADODB.Recordset
rs.Open "マスタ", cn, adOpenForwardOnly, adLockOptimistic

'■DBへのレコード追加
'h.xlsの取り込みスタート行設定
iRow = 13

''h.xlsの最終使用行 取得および設定
iUsed = Worksheets(1).UsedRange.Rows.Count'★
'MsgBox "使用行は" & iUsed & "です。"
(以下略)。。。。

A 回答 (2件)

iUsed = Worksheets(1).UsedRange.Rows.Count'★



は少なくとも

iUsed = app.Worksheets(1).UsedRange.Rows.Count'★

であるべきだと思います。
(これでエラーが無くなるかは別かもしれませんが)
    • good
    • 0
この回答へのお礼

>30246kikuさま

ありがとうございました。
とりあえずエラーはでなくなりました。

お礼日時:2009/12/01 12:18

Dim app As Object


Dim sourceBook As Object
Dim sourceSheet As Object
Set app = CreateObject("Excel.Application")
Set sourceBook = app.Workbooks.Open(CurrentProject.Path & "\h.xls")
Set sourceSheet = sourceBook.Worksheets(1)

iUsed = sourceSheet.UsedRange.Rows.Count

せめてこれぐらいまでは参照をする。
    • good
    • 0
この回答へのお礼

>temtecomai2さま

ありがとうございます。
AccessVBAに関してはだいぶ初心者で、
参照や受け渡しの部分がまだよくわかっていません。
戴いたご意見をもとに引き続き勉強します。

お礼日時:2009/12/01 12:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す