こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access からオブジェクトとして開いたExcelのプロセスが終了しない

AccessからExcelのデータを読み込んだ後、Accessを終了させてもプロセスが終了しません。
bookはclose、applicationはquit、オブジェクト変数はnothingというExcelの終了記述をしているので他の問題なのかと思いいろいろ調べて試しましたが解決できません。

Excelのファイル名とシート名はAccessのフォームに貼り付けたテキストボックスの値を取得させていますが下記コードでは省略しています。環境はWin2000Server、Access2000です。
どなたかお気づきの点があればどうぞご教授お願いします。

---------------------------------
Public Sub test()

Dim filename As String
Dim sheetname As String
filename = "c:\パス\ファイル名.xls"
sheetname = "シート名"

'AccessからExcelをオブジェクトとして開く
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(filename)
Set xlSheet = xlBook.Worksheets(sheetname)

'Excelの行取得用変数設定
Dim xlrow As Integer 'データ開始行
xlrow = 5

Dim xlrowEnd As Integer 'データ最終行(最終行は合計値が入っているので-1とする)
xlrowEnd = (Range("A5").End(xlDown).Row) - 1


'Excelデータの取り込み
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset

rs.Open "a", cn, adOpenKeyset, adLockOptimistic
cn.Execute "delete * from a"

xlrow = 5 'Excelデータの開始行番号

Do While xlrow <= xlrowEnd

rs.AddNew
rs!フィールド1 = xlSheet.Cells(xlrow, 1).Value
rs!フィールド2 = xlSheet.Cells(xlrow, 2).Value
rs.Update
rs.MoveNext
xlrow = xlrow + 1
Loop

'Excelの終了記述
xlBook.Close
xlApp.Quit

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

'ADO接続終了記述
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

投稿日時 - 2007-11-07 17:47:48

QNo.3497686

すぐに回答ほしいです

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

> xlrowEnd = (Range("A5").End(xlDown).Row) - 1
この行が問題です。
上位のオブジェクトから記述しないと
プロセスが残ります。

xlrowEnd = (xlSheet.Range("A5").End(xlDown).Row) - 1
にしてください。

投稿日時 - 2007-11-07 17:58:53

お礼

ありがとうございます!!

見事にExcelのプロセスがありません!!

感謝感謝です!!m(__)m

いろいろ検索している中で
「外部からExelを操作する時にApplication→Workbook→WorkSheetの関係を明示的に示す必要がある」という記述を見つけたのですが、
私がいろいろいじくるとエラーばかり返されすっかり途方にくれていました。
本当にありがとうございました。m(__)mm(__)m

投稿日時 - 2007-11-07 18:20:49

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問