[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間: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回だけ開く場合は正常に終了します。
処理の書き方でまずい所があるのでしょうか?それとも他に原因が・・・。
よろしくお願いします。

投稿時間:2004/11/17(Wed) 11:58
投稿者名:kazuやん
Eメール:
URL :
タイトル:
自己解決
自己解決しました。

わざわざDAOを何度も開かずにrs.MoveFirstで対処しました。
お騒がせしました(−−)ペコリ