過去ログ

                                Page      57
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼エクセルのVBAでテキストファイルからACCESSに読み込みたい。  初心者M 02/10/1(火) 19:15
   ┗Re:エクセルのVBAでテキストファイルからACCESSに読み込みたい。  こうちゃん 02/10/3(木) 9:21
      ┗説明不足ですみません。  初心者M 02/10/5(土) 7:43
         ┣Re:説明不足ですみません。  こうちゃん 02/10/7(月) 9:39
         ┗ADOは無理  yu-ji 02/10/7(月) 13:07

 ───────────────────────────────────────
 ■題名 : エクセルのVBAでテキストファイルからACCESSに読み込みたい。
 ■名前 : 初心者M
 ■日付 : 02/10/1(火) 19:15
 -------------------------------------------------------------------------
   こんにちは。

エクセルVBAで テキストファイルにあるデータをACCESSに読み込み、エクセルとして加工したいのですが、テキストからACCESSに読み込む事がうまくいきません。

ADOを使いたいのですが、下記のコードでは ODBC Driver Manager データソース名および指定された規定のドライバが見つかりません、と出てしまうのです。

また、TEXTファイルの区切り形式やテキスト型や長整数型などに関係なく、読み込むことはできないものでしょうか?

どなたか教えてください。宜しくお願いします。

  Dim cn As New ADODB.Connection
 
  'ACCESSに接続
  Set cn = New ADODB.Connection
 
 cn.ConnectionString = " Provider = MSDASQL;" & "Extended Properties=" & "DBQ=c:\temp\;" & "Driver={Microsoft text Driver (*.txt;*.csv)};"
& "extensions=txt,csv,tab,asc;FIL=text"
 cn.Open

 ───────────────────────────────────────  ■題名 : Re:エクセルのVBAでテキストファイルからACCESSに読み込みたい。  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/10/3(木) 9:21  -------------------------------------------------------------------------
   初心者M さん、こんにちは

すみません、質問をもう少しわかりやすく説明できませんか?

>エクセルVBAで テキストファイルにあるデータをACCESSに読み込み、エクセルとして加工したいのですが、テキストからACCESSに読み込む事がうまくいきません。

これはエクセルのVBAでアクセスのmdbに書き込むという質問ですか?
エクセルとして加工とはどんな意味ですか?

>ADOを使いたいのですが、下記のコードでは ODBC Driver Manager データソース名および指定された規定のドライバが見つかりません、と出てしまうのです。
>
>また、TEXTファイルの区切り形式やテキスト型や長整数型などに関係なく、読み込むことはできないものでしょうか?
ここも

これはほぼ無理ですね。Accessで処理するにしてもExcelで処理するにしても区切り形式がわからないテキストファイルは読み込みしようがないとおもいます。
具体的にテキストファイルの例をUPできませんか?

また、色々な種類のテキストを読み込んでExcelでどんな処理をしたいのですか?
もしかするとOPENステートメント等を使ったほうがいいかもしれませんね。

なにをどうしたいのかをもっと具体的に、かつ詳細に書いたほうがレスがつきやすいですよ。
また、Access、Excelのバージョン、OSの種類、ADOを使わなければならない理由等も書いてくださいね。

>
>  Dim cn As New ADODB.Connection
> 
>  'ACCESSに接続
>  Set cn = New ADODB.Connection
> 
> cn.ConnectionString = " Provider = MSDASQL;" & "Extended Properties=" & "DBQ=c:\temp\;" & "Driver={Microsoft text Driver (*.txt;*.csv)};"
>& "extensions=txt,csv,tab,asc;FIL=text"

このODBCの指定が混乱しているようですね。よく確認して接続文字列構成してください。

 ───────────────────────────────────────  ■題名 : 説明不足ですみません。  ■名前 : 初心者M  ■日付 : 02/10/5(土) 7:43  -------------------------------------------------------------------------
   こんにちは。
詳しく説明させて頂きます。

>>エクセルVBAで テキストファイルにあるデータをACCESSに読み込み、エクセルとして加工したいのですが、テキストからACCESSに読み込む事がうまくいきません。
>
>これはエクセルのVBAでアクセスのmdbに書き込むという質問ですか?
>エクセルとして加工とはどんな意味ですか?

そうです。 (^^;)

エクセルのVBAをつかって、テキストファイルのデータを、その都度ACCESSのmdbを作成し、テーブルにして、それをフィルターをかけ、必要部分だけを抜き出してエクセルで並べ替えたり、ブックを作成したりしたかったのです。

(必要部分をエクセルで加工するところはできているので、テキストファイルを呼び出す ところを教えて頂けますか?)

あれから試行錯誤して、一応テキストファイルとエクセルを接続する事ができ、その際、フィルターを使うからACCESS・・・と思っていたのですが、テキストファイルとADOで接続し、そのままフィルターを掛ける事ができたので、一度ACCESSにする必要はなくなりました。

ところが、テキストファイルでは 0045 なのですが、 読み込んでみると 45 となっているのです。

読み込む際に、フィールドのデータ型などを設定する必要があるのでしょうか?

  ' レコードセットをオープン
  Set rst = New ADODB.Recordset
  
  rst.Source = strDBName
  rst.ActiveConnection = cn
  rst.CursorType = adOpenStatic  ’←この辺よく分からないので、本のまま。。
  rst.Open
  
  Do While Not rst.EOF
    
    Debug.Print rst.Fields(0) ’← この地点で 0045 が 45 に。。。
    Stop
    rst.MoveNext
  Loop


テキストファイルの区切り記号は カンマと決まっているのですが、将来は項目が増加しそうなので 、どう扱えばいいのか困っています。

無条件でテキストファイルと同様に読み込む方法とか、フィールドのデータ型を調べる方法とか、
ヒントがあれば、教えてください。
宜しくお願いします。


ACCESS   97 以上
エクセル     97 以上
ウインドウズ   95以上

ADOは手元に資料があったから使用しています。

 ───────────────────────────────────────  ■題名 : Re:説明不足ですみません。  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/10/7(月) 9:39  -------------------------------------------------------------------------
   初心者M さん、こんにちは

>テキストファイルの区切り記号は カンマと決まっているのですが、将来は項目が増加しそうなので 、どう扱えばいいのか困っています。
>
>無条件でテキストファイルと同様に読み込む方法とか、フィールドのデータ型を調べる方法とか、
>ヒントがあれば、教えてください。
>宜しくお願いします。
>
>
>ACCESS   97 以上
>エクセル     97 以上
>ウインドウズ   95以上
>
>ADOは手元に資料があったから使用しています。

数字で構成されるフィールドはIntegerが既定のデータ型になります。
そのために、 0045 は 45 と解釈されてしまいます。
Char型として読み込むには、データ型の指定が必要です。

cn.ConnectionString = " Provider = MSDASQL;" & "Extended Properties=" & "DBQ=d:\test\;" & "Driver={Microsoft text Driver (*.txt;*.csv)};extensions=txt,csv,tab,asc;FIL=text"

この形でのODBCドライバの設定はよくわかりませんが、ODBC側の設定で、データ型を指定したらどうでしょうか?
#ODBCの設定は、コントロールパネルの「データソース(ODBC)」で行います。
#また、コネクションの設定でDSNを指定します。
#cn.ConnectionString = "DSN=TEXTTEST;FIleName=d:\test\test.txt"

ちなみに、エクセルでテキストファイルを取り込むなら、ADOを使わなくてもいろいろ方法がありますよ。
例えば、「データ」「外部データの取り込み」「テキストファイルのインポート」をみてみてください。
フィールドの型式の設定もできますので、こちらを利用されたらいかがでしょう?
マクロ記録をつかえばVBAも作成できますし・・

なお、本件はExcelの処理になりそうですので、これ以降はExcel質問箱で質問していただけますか?

 ───────────────────────────────────────  ■題名 : ADOは無理  ■名前 : yu-ji  ■日付 : 02/10/7(月) 13:07  -------------------------------------------------------------------------
   こうちゃんさんのレスがあるので、不要かもしれませんが、
一応、ちょっと気になったので。

>ACCESS   97 以上
>エクセル     97 以上
>ウインドウズ   95以上
>
>ADOは手元に資料があったから使用しています。

Access97以上は97を含むってことですよね?
ADOは(たしか)Access2000からなので、ADOを使うのは上記の環境下では
無理だと思います。

#Verの統一されていないツールって難しいですよねぇ。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 57