投稿日 | : 2004/11/17(Wed) 11:36 |
投稿者 | : kazuやん |
Eメール | : |
URL | : |
タイトル | : DAOについて |
こんにちは、kazuやんといいます。
今、DAOでちょっと困っています。
'-----------------------------------------------------------------------------------------
Dim r_cnt As Integer
xls_file_name = App.Path & "\test.xls"
xlSheetName = "Sheet1$"
in_file_name = App.Path & "\test.csv"
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(in_file_name) = False Then
MsgBox FSO.GetFileName(in_file_name) & "ファイルが存在しません!!"
Set FSO = Nothing
Exit Sub
End If
Set FSO = Nothing
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ObjTs = FSO.OpenTextFile(in_file_name, ForReading, True)
r_cnt = 0
'末尾レコードまでのデータを読込
Do While ObjTs.AtEndOfStream <> True
'r_cnt = r_cnt + 1
'1行読み込み
r_rec = ObjTs.ReadLine
Set db = OpenDatabase(xls_file_name, False, False, "Excel 8.0;HDR=No;IMEX=1")
'Recordsetオブジェクトのオープン
Set rs = db.OpenRecordset(xlSheetName)
Do Until rs.EOF
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
Loop
Set ObjTs = Nothing
Set FSO = Nothing
MsgBox "Fin"
Unload Me
End Sub
'-----------------------------------------------------------------------------------------
上記のプログラムなのですが、FSOでcsvファイルを開きループさせています。
その中でDAOでexcelファイルを開きこれもループさせるという単純な処理なのですが、
自分の環境では正常に動作します。又VBがインストールされているパソコンでも正常に動作します。
しかし、VBがインストールされていないとエラーではじかれてしまいます。
「"0x・・"の命令が"0x・・・"のメモリを参照しました。メモリが"written"になることはできませんでした」
色々見てみるとどうやらFSOのループの中でDAOを何度も開いたり閉じたりしている所で警告が出ているようなのです。1回だけ開く場合は正常に終了します。
処理の書き方でまずい所があるのでしょうか?それとも他に原因が・・・。
よろしくお願いします。