• ベストアンサー

Access VBAでExcel連携時のエラー(ワークシート指定時)

いつもお世話になっております。 現在、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 & "です。" (以下略)。。。。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

iUsed = Worksheets(1).UsedRange.Rows.Count'★ は少なくとも iUsed = app.Worksheets(1).UsedRange.Rows.Count'★ であるべきだと思います。 (これでエラーが無くなるかは別かもしれませんが)

noname#105246
質問者

お礼

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

その他の回答 (1)

回答No.2

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 せめてこれぐらいまでは参照をする。

noname#105246
質問者

お礼

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

関連するQ&A