アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (1件)

> xlrowEnd = (Range("A5").End(xlDown).Row) - 1


この行が問題です。
上位のオブジェクトから記述しないと
プロセスが残ります。

xlrowEnd = (xlSheet.Range("A5").End(xlDown).Row) - 1
にしてください。
    • good
    • 1
この回答へのお礼

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

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

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

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

お礼日時:2007/11/07 18:20

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

このQ&Aを見た人はこんなQ&Aも見ています

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