• ベストアンサー

ExcelからAccessを操作中のウエイト

AccessのデータをExcelからSQL文を使って取り出しています。 複数のレコードセットを2次元配列に取り組むために With My_RecSet On Error Resume Next .Open MySQL, My_DB On Error GoTo 0 Application.Wait Now + TimeValue("00:00:01") On Error GoTo RsCloseHdl If .EOF And .BOF Then '該当するレコードセットが一つもない場合 SQL_ext = -1  ←Function名 Exit Function Else SQL_ext = .GetRows End If としています。 私のパソコンの性能の関係かもしれませんが、ウエイトを入れないとたまに、レコードセットが1つ以上あるのにも関わらず.EOF And .BOF で引っ掛かります。1秒以下のウエイトの入れ方を教えて頂けませんか? また、たまに、.Closeさせているにも関わらす、.Open MySQL, My_DBで、すでに開いているものに開けませんとエラーがでるので、やむなく、On Error Resume Nextとしています。限られた情報の提供となりますが、わかる範囲で教えて頂けないでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

> 1秒以下のウエイトの入れ方を教えて頂けませんか? Sleep API が一番簡単かな。モジュールの先頭で以下のように宣言 しておき、ミリ秒(1秒=1000ミリ秒)単位でウェイトをかけられ ます。 Declare Sub Sleep Lib "kernel32.dll" ( _     ByVal dwMilliseconds As Long) Sub Test()   ' 処理~   Sleep (500) ' 500ミリ秒   ' 処理~ End Sub

vba_minarai
質問者

お礼

Loop処理の中でウエイトを使っていたので、実際に処理する時間の3倍ぐらいがウエイトで占められていましたので大変助かります。 早速使わせて頂きます。 ありがとうございます。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

だめもとで・・ >レコードセットが1つ以上あるのにも関わらず.EOF And .BOF で引っ掛かります Dcount で判断させてから、あれば配列に代入とか? >Closeさせているにも関わらず Closeの処理を通ってないとか、.Close : Set My_RecSet = Nothing としてみるとか カーソルタイプをadOpenDynamic などに変えてみるとか

vba_minarai
質問者

お礼

回答ありがとうございます。 Accessは、初心者なのでいろいろと勉強していきたいと思います。 教えて頂いた点についても調べてみます。 本当にありがとうございました。

関連するQ&A