- ベストアンサー
ACCESS2000でEXCELデータのインポート
IBM AS/400のデータ転送でファイルタイプBIFFでEXCELファイルに落としたものをACCESS2000でインポートすると外部フォーマットが正しくないとなります。以前はACCESS VER.2.0では出来たのですが。どなたかご存知の方、お教えねがえないでしょうか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エクセルのバージョンはどれをお使いになっていますか? エクセルのバージョンが古いとひょっとしてAccess2000では読めない可能性があります。 また、一手間かかりますが、エクセルからCSV形式に出力して、Accessで取り込む回避策も考えられます。
その他の回答 (2)
- oribeyaki
- ベストアンサー率45% (18/40)
返答が遅くなりすいません。 推測のレベルでしかないのですが・・・複数の原因があるように思えます。 AS400側の「BIFF」作成部分というのは旧来のままですか? そうであるとすると、「BIFF」のバージョン違いによるエラーが考えられます。 (Excel2000対応:BIFF,BIFF3,BIFF4,BIFF5,BIFF8) また、「BIFF8」になって、かなり機能拡張がありました。 また、別の事例で「CSV」形式のファイルをExcel取り込み→Accessインポートの過程で同様のエラーが出ているものがありました。 これは、Access97とAccess2000のテキストドライバの違いでこのエラーが起こるとの事でした。 推測1 ExcelではそのBIFF形式は問題なく読み込めるが、Accessではそのバージョンの形式を認識できない。もしくは「xls」にひもついているExcel2000(BIFF8)の形式と判断して読み込もうとして失敗している。 推測2 Excel2000ではそのBIFF形式を認識していない。また、開いた時は入っているように見えても内部コードがおかしい。 (開いてみると何かメッセージが出るかも?手がかりになりそうならめっけもん) 対処方法(これも推測) 場あたり的対処 一度その「xls」ファイルを開いて、「最新のバージョンに変換しますか?」が出たら変換してセーブ、出なかったら一度テキスト形式(CSVとか)に落として、それを新規のExcelに取り込み。 その後、Accessで取り込み。 (ようは、力押しで最新のExcel形式にしてしまってから取り込み。) 抜本的対処 AS400のファイル作成プログラムを「BIFF8」の形式で作成しなおす。 ※ただし、AS400側の「BIFF」作成部分が旧来のままという前提に立ったコメントにつき、おおはずしの可能性大(爆) まあ、ドライバのバージョン違いと形式のバージョン違いに起因するエラーには間違いないとは思いますが・・・^^; (BIFFは扱ったこと無いので良く判らないんです。すいません。) 原因個所が絞り込めてきましたので、問題解決まで後少しってとこですかね。 また、補足、私の勘違い、意味がわからないなどありましたら、ご返答ください。
お礼
色々長々と質問してすみませんでした。 とりあえず場あたり対処でやっていきます。 ありがとうございました。
補足
こんにちわ、oribeyakiさん 返答有難うございます。 場あたり的対処やってみました。最新のバージョンに変換したら出来ました。 有難うございます。 あと、出来ればEXCELLを開いて、最新のバージョンに変換しますか?を ACCESS2000のマクロ又は、モジュールを使って出来ないでしょうか。 しつこくてすみません。 宜しくお願いします。
- oribeyaki
- ベストアンサー率45% (18/40)
おはようございます。 AccessにExcelからデータを取り込むのには、「インポートウィザード」を使われてますか? (「テーブル」の「インポート」を選択してExcelブックを選ぶと自動的に出てくるものですが・・・) 「インポートウィザード」を使用していれば、補足していただいた内容を実現する事は簡単にできます。 流れを書きます。 1・「テーブル」で「新規作成」→「テーブルのインポート」を選択。 2・インポートダイアログの「ファイルの種類」を「MicroSoft Excel(*.xls)」にして、指定のエクセルブックを選択。 3・「ワークシートインポートウィザード」画面が開きます。 4・画面1ページ目は取り込むシートの選択。「次へ」を押して2ページ目がご要望の設定です。「先頭行をフィールド名として使う」チェックボックスをONにすれば、これで先頭のフィールド名がデータとして扱われません。 5・新規に作成するのであれば、次ページから新規作成のプロセスで「フィールド名」を変更したりして取り込みます。 6・既存のテーブルにデータを追加する場合1つ問題があり、4で先頭行をフィールド名として扱う設定にしてありますので、取り込み先のテーブルのフィールド名と、Excelのフィールド名が一致している必要があります。これと取り込むデータが、テーブルのデータ型と一致していれば問題ないはず。 「ウィザード」を使ってやる場合はこのような流れになると思います。 もし、既存テーブルに取り込みでフィールド名が違う場合、一度別に新規にテーブルを作成してから、元テーブルにインサートするとか、前のデータはすべて要らない場合は、新規作成後リネームするなどいろいろ回避はできます。 「ウィザード」を使用していなくて、マクロの「ワークシート変換」や、VBAで「TransferSpreadSheet」を使用しているのであれば、「フィールド名の設定」を「YES/はい」にすれば、先頭行がフィールド名として扱われます。 「範囲/Range」を先頭行無しで選択して既存のテーブルにインポートすることはできないようです。(やれると思ったのですが・・・、融通きかねーなぁ^^;) ただ、この場合も、「ウィザード」の6と同じ問題に引っかかるので、同じように回避策が必要になります。 すいません、取り留めの無い文章になってしまい、判りづらいかと思います。 補足、私の勘違い、意味がわからないなどありましたら、ご返答ください。 (朝はどうにもダメなんですよ。)
補足
おはようございます。 流れとても判り易いです。 さっそく試みてみましたが流れ3へ行く前に"外部テーブルのフォーマットが正しくありません。"とエラーが出てしまいます。 (:_;)エーン
補足
oribeyakiさんアドバイス有難うございます。 EXCELLは2000です。 IBMAS/400でEXCELLにデータ転送するとEXCELLの中は下の様になってます。 A B C D E F G H I J K L M 1 TSUKI HI KINGAKU 2 09 29 \3,000 3 4 上記の様に一行目にフィールド名が必ず入ってしまうのです。 たぶんACCESS2000ないでEXCELLの一行目を削除してからインポートすれば良いと思いますが、やりかたが解かりません 引き続きアドバイス願えればありがたいのですがお願い致します。