VB6.0用掲示板の過去のログ(No.2)−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回だけ開く場合は正常に終了します。
処理の書き方でまずい所があるのでしょうか?それとも他に原因が・・・。
よろしくお願いします。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -