tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 に指定するべきはディレクトリのパスであって、
ファイルのパスでもファイル名でもないはず…。

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

古いスレッドにレスはつけられません。