タイトル : Re: CSVを読み込みたい 投稿日 : 2023/02/18(Sat) 16:45 投稿者 : 魔界の仮面弁士
> da.Fill(CSVData)←ここでエラーになります。 質問時には、正確なエラーメッセージを示しましょう。(^_^; エラーになる要因として、Provider が読み込めないとか、 ファイルが読み込めないとか、権限不足であるなど、様々な要因がありえますが エラー内容も示さずに判断を求めるのは、あまりにも酷というものです。 とりあえず、まず調べるべきは、 1) そのアプリは、32bit プロセスで稼働しているのか、それとも 64bit プロセスなのか 2) そもそも実行環境に、Jet 4.0 Provider がインストールされているのか 3) CSV の型を明示指定するための Schema.ini ファイルの配置は行われているのか 4) ファイルのパス指定に問題がある。 という点です。 実際のところ、4 のパス指定のミスという可能性が高いですが、 本当に Excel ファイルは読めているのだとすれば、思い当たるのは 3 です。 もしかしたら他の要因もあるかもしれませんが。 > 同じ方法でEXCELのデータを読み込むことには成功しているので 本当に「同じ」方法ですか? 実際は微妙に違うコードだったりしませんか? CSV とでは、Extended Properties の指定方法が異なるはずで、 このコードのままでは読めないはずなのですが…。 > Dim FileNM As String = Mid(FilePath, InStrRev(FilePath, "\")+1) 素直に Path.GetFileName を使いましょう。VBA では無いのですから…。 > Dim CNstr As String = "Provider=Microsoft.JET.OLEDB.4.0;" ACE 15/16 ではなく、Jet 4.0 で読み取るのですか? https://www.microsoft.com/en-us/download/details.aspx?id=54920 下記の「Microsoft Jet データベース エンジン 4.0」の項には 『これらのアプリケーションについては、Jet から Microsoft Access データベース エンジンに 移行することを計画する必要があります。』との記述があります。 https://learn.microsoft.com/ja-jp/sql/connect/connect-history?WT.mc_id=DT-MVP-8907&view=sql-server-ver16 Jet 4.0 の後継であった ACE 12 をベースとしている Access 2010 世代ですら 既にサポート期限が切れています。(再来月にサポート終了を迎える Access 2013 は ACE 13 世代) Jet 4.0 は 32bit 専用の古い実装であり、64bit プロセスに対応できないという欠点もありますし、 どうせなら、今のうちに見直しておいた方が良いかもしれません。 > [FileNM]には前処理でダイアログで選択したファイルパスが > 入っています。 FileNM に入っているのは、ファイルパスでは無いですよね。 ファイルパスが入っているのは FilePath では無いでしょうか。 それに、Extended Properties="Text;" モードの場合、 Data Source に指定するべきはディレクトリのパスであって、 ファイルのパスでもファイル名でもないはず…。 |