MS-ACCESS2003のVBAを用いて以下のようなコードを記述しています。
=============================================
function funcB()
Dim objB As Object
Dim objC As Object
Set objB = R3.Add("RFC_READ_TABLE")
set objC = objB.Tables("DATA")
objCに他システムからselectしたデータを格納
set objB = nothing
end function
=============================================
function funcA()
for i = 0 to n
call funcB
next
end function
=============================================
上のようにfuncAから複数回呼ばれるfuncBにおいて、objCにnothingをsetすることで一旦は参照が切れて
見えなくなりますが、再度funcAからcallされるとobjCには前回のデータが残ったままとなっています。
これを回避するためにnothingをセットする前にobjCのデータを消去したいのですが、deleterowだと一件
ずつの削除となり50万件で30分程度の時間を要してしまいます。
何か改善する良い方法はないでしょうか?
よろしくお願いすます。
No.1
- 回答日時:
set objB = nothing
end function
を
set objB = nothing
set objC = nothing
end function
では駄目なのですか?
No.2ベストアンサー
- 回答日時:
No1です。
失礼しました。質問文中に、[set objC = nothing]ではだめ、と書いてありましたね。
何かダミーの小さい(初期化された)を用意しておいて
再度setするとか。
#コピペでうっかり巨大なデータを扱って動作が遅くなった際に
#何か小さなデータを再度コピーしてクリップボードを初期化するのと
#同じような感じで。
nothingでは参照設定が無くなるだけで、実体は残っていて、2回目にcallされて、再度同じ名前でsetするとデータがよみがえってしまいまうんです。
SAPのRFC_TABLE_READという汎用モジュールを使っているのですが、オブジェクト名を変えても結果は同じでした。
結局SAPの汎用モジュール側で受け取ったオブジェクトに対して初期化せずにAPPNEDをしているのがいけないことが分かり、SAPの汎用モジュールの先頭でオブジェクトを初期化するようにしたら解決しました。
色々とアドバイスを頂きまして、有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
VBA 毎日取得するデータを順番...
-
エクセルで1次近似をもとめたい
-
Excelのマクロでワードのテキス...
-
VBA 該当データがない時 ...
-
VBA 空白セルを削除ではない方...
-
C#にてDropDownListの値を動的...
-
マクロVBAについて
-
ミラーデータとは?
-
LoadPictureしたイメージデータ...
-
ADOを使用してExcelデータをAcc...
-
【VB】DataGridViewにテキスト...
-
Android携帯をUSBメモリ代わりに
-
【エクセル】測定時間がバラバ...
-
最大値、最小値
-
シリアル通信でのデータ受信
-
javaでDBからデータを取ってき...
-
シーケンサにパソコンからアク...
-
レコードセットのデータを1行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
配列でデータが入っている要素...
-
多量のSUMIF式を軽くしたい
-
エクセルで2つの時系列のデー...
-
Excelのマクロでワードのテキス...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
VBAを使ってOutlookメール本文...
-
Accessで該当データにフラグを...
-
合計3TBのデータのハッシュ値を...
-
シーケンサにパソコンからアク...
-
S9タイプからXタイプにデータ...
-
カンマからスラッシュに
-
VBAでシートからコンボボックス...
-
VBA 毎日取得するデータを順番...
-
ビットシフトについて
-
ユーザーフォームのテキストボ...
-
EXCELVBAでSQLserverからデータ...
-
特定のデータの抽出方法を教え...
おすすめ情報