Excel VBA 質問スレッド No.154 (未解決)

VBA 実行時エラー '-2147217887 (80040e21)': メモリ不足です。

投稿者 : akasis     投稿日時 : 2021/01/04(Mon) 13:27:29     OS : 未指定     EXCEL : 未指定
初めまして。
Excelのマクロ実行時にて、エラーが発生しその原因が掴めずに困っています。
解決に向けてアドバイスを頂きたく、助けて頂けると有難いです。
宜しくお願い致します。


マクロ実行時エラー「実行時エラー '-2147217887(80040e21)': メモリ不足です。」に関して
急にエラーが出るようになりました。
エラーが出る箇所は2か所です。
エラー発生時はF8キーを押すと、コードが進むので継続処理を行うと数ルーチン繰り返せるのですが
また同じところで止まります。
このエラーが発生すると、リセットでデバッグ画面を閉じても、Excelがフリーズして動かなくなります。

Excel⇒Accessテーブルへの書き込み時下記コード中の赤字部分です。
blnReadOnly = False 'データベースを共有モードで開く

dbFile = "\\cs0097\60000_yojitsu\部品不足リスト\部品不足リスト.accdb"
myCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & dbFile & ""
myCon.Open


myRecordSet.Open "DELETE * FROM T_不足部品_Excelマクロ;", myCon


mySQL = "SELECT * FROM T_不足部品_Excelマクロ"
myRecordSet.Open mySQL, myCon, adOpenDynamic, adLockOptimistic


For intGyo = 2 To intLastGyo
myRecordSet.AddNew
myRecordSet.Fields("組立外注CTEXT") = Worksheets("不足部品集計").Cells(intGyo, 11).Value
myRecordSet.Fields("部品CTEXT") = Worksheets("不足部品集計").Cells(intGyo, 12).Value
myRecordSet.Fields("所要量") = Worksheets("不足部品集計").Cells(intGyo, 13).Value
myRecordSet.Fields("在庫数") = Worksheets("不足部品集計").Cells(intGyo, 14).Value
myRecordSet.Fields("不足") = Worksheets("不足部品集計").Cells(intGyo, 15).Value
myRecordSet.Update


Next intGyo


myRecordSet.Close
Set myRecordSet = Nothing
myCon.Close
Set myCon = Nothing


Excelの行のインサート時です。下記コード中の赤字部分です。
Worksheets(strSheetName).Select
Range("A1048576").Select
Selection.End(xlUp).Select
Selection.End(xlUp).Select
intStartGyo = ActiveCell.Row


Range("A1048576").Select
Selection.End(xlUp).Select
intLastGyo = ActiveCell.Row


Range(Cells(intStartGyo, 9), Cells(intLastGyo, 9 + intRetu - 21)).Select
Selection.Insert shift:=xlToRight, copyorigin:=xlFormatFromLeftOrAbove


宜しくお願い致します。

[返信 1] Re : VBA 実行時エラー '-2147217887 (80040e21)': メモリ不足です。
投稿者 : ヘンリー     投稿日時 : 2021/01/07(Thu) 16:50:08
当方でエラーが出ないので難しいですが…

>Excel⇒Accessテーブルへの書き込み時下記コード中の赤字部分です。
赤字になっていないので、どこで止まるかわかりませんが、
Accessへの書き込み時に止まると仮定して、
色々ネット検索した結果、
On Errorステートメントを使用して、
1度レコードセットを閉じて開きなおすとか、
トランザクション処理にして、1行ずつコミットするとか
ですかね。

当掲示板について
返信入力フォーム
お 名 前  :
内  容   :
ステータス  : この質問を解決済みにする

認証コード  :
        キャプチャ画像


( 処理日時 : 2021-01-27 13:15:34 )

Page
Top