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
No.1ベストアンサー
- 回答日時:
> xlrowEnd = (Range("A5").End(xlDown).Row) - 1
この行が問題です。
上位のオブジェクトから記述しないと
プロセスが残ります。
xlrowEnd = (xlSheet.Range("A5").End(xlDown).Row) - 1
にしてください。
ありがとうございます!!
見事にExcelのプロセスがありません!!
感謝感謝です!!m(__)m
いろいろ検索している中で
「外部からExelを操作する時にApplication→Workbook→WorkSheetの関係を明示的に示す必要がある」という記述を見つけたのですが、
私がいろいろいじくるとエラーばかり返されすっかり途方にくれていました。
本当にありがとうございました。m(__)mm(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
-
-
4
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
5
Excelプロセスが消えない
Visual Basic(VBA)
-
6
アクセスからエクセルファイルを全て閉じたい
Access(アクセス)
-
7
アクセスvbaでエクセルブックを保存
その他(Microsoft Office)
-
8
ACCESS VBAで作成済のExcelのコピーを作りたい
Visual Basic(VBA)
-
9
Access サブフォームでの選択行の取得
その他(データベース)
-
10
ACCESSVBA からExcelの他ブックへコピーの方法
Visual Basic(VBA)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
On ErrorでエラーNoが0
Visual Basic(VBA)
-
13
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
14
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
15
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
16
「RunSQL」と「Execute」の違い
Access(アクセス)
-
17
access マクロでのフィルタの解除の方法
Access(アクセス)
-
18
ExcelVBAにてアプリをタスクマネージャーから強制終了させたいのですが
Visual Basic(VBA)
-
19
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
20
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
VBA エンターキーでイベントに...
-
Excel VBAでマウスの左クリック...
-
日本語の文字化けを直す方法
-
Excel2007 でのチェックボック...
-
文字列で小数点以下の0を削除し...
-
PowerpointVBAで指定のShapeオ...
-
エクセルVBAでセル番地を指定し...
-
Imageコントロールにグラフを表...
-
openGLにおいて描画した物体に...
-
エクセルのデータをwebフォーム...
-
アクセス 名前のつけ方について。
-
「SHDocVw」の意味
-
VBAでフォームのコントロールの...
-
VBでエクセルのグラフを表示したい
-
VBAで選択範囲外の図形(オブジ...
-
HTMLでこの画像を表示したいで...
-
「ご処理進めて頂きますようお...
-
VBAでループ内で使う変数名を可...
-
UPS警告音を止めたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
文字列で小数点以下の0を削除し...
-
Excel VBAでマウスの左クリック...
-
【エクセルのマクロ】クリップ...
-
エクセルVBAでセル番地を指定し...
-
Accessのフォーム上にエクセル...
-
コードでオブジェクトを最前面に
-
日本語の文字化けを直す方法
-
現在アクティブになっているオ...
-
Imageコントロールにグラフを表...
-
Excel2007 でのチェックボック...
-
PowerpointVBAで指定のShapeオ...
-
Access からオブジェクトとして...
-
エクセルのデータをwebフォーム...
-
【エクセル】複数のTextBoxに共...
-
[C#] DataGridViewの項目名
-
カッコ付けのオブジェクト名を...
-
ExcelのシートをAccessで表示し...
-
ユーザーフォームのインポート...
おすすめ情報