最新閲覧日:

IBM AS/400のデータ転送でファイルタイプBIFFでEXCELファイルに落としたものをACCESS2000でインポートすると外部フォーマットが正しくないとなります。以前はACCESS VER.2.0では出来たのですが。どなたかご存知の方、お教えねがえないでしょうか

A 回答 (3件)

返答が遅くなりすいません。


推測のレベルでしかないのですが・・・複数の原因があるように思えます。

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のマクロ又は、モジュールを使って出来ないでしょうか。
しつこくてすみません。
宜しくお願いします。

補足日時:2001/10/01 14:22
    • good
    • 0
この回答へのお礼

色々長々と質問してすみませんでした。
とりあえず場あたり対処でやっていきます。
ありがとうございました。

お礼日時:2001/10/03 14:36

おはようございます。



AccessにExcelからデータを取り込むのには、「インポートウィザード」を使われてますか?
(「テーブル」の「インポート」を選択してExcelブックを選ぶと自動的に出てくるものですが・・・)
「インポートウィザード」を使用していれば、補足していただいた内容を実現する事は簡単にできます。

流れを書きます。
1・「テーブル」で「新規作成」→「テーブルのインポート」を選択。
2・インポートダイアログの「ファイルの種類」を「MicroSoft Excel(*.xls)」にして、指定のエクセルブックを選択。
3・「ワークシートインポートウィザード」画面が開きます。
4・画面1ページ目は取り込むシートの選択。「次へ」を押して2ページ目がご要望の設定です。「先頭行をフィールド名として使う」チェックボックスをONにすれば、これで先頭のフィールド名がデータとして扱われません。
5・新規に作成するのであれば、次ページから新規作成のプロセスで「フィールド名」を変更したりして取り込みます。
6・既存のテーブルにデータを追加する場合1つ問題があり、4で先頭行をフィールド名として扱う設定にしてありますので、取り込み先のテーブルのフィールド名と、Excelのフィールド名が一致している必要があります。これと取り込むデータが、テーブルのデータ型と一致していれば問題ないはず。

「ウィザード」を使ってやる場合はこのような流れになると思います。
もし、既存テーブルに取り込みでフィールド名が違う場合、一度別に新規にテーブルを作成してから、元テーブルにインサートするとか、前のデータはすべて要らない場合は、新規作成後リネームするなどいろいろ回避はできます。

「ウィザード」を使用していなくて、マクロの「ワークシート変換」や、VBAで「TransferSpreadSheet」を使用しているのであれば、「フィールド名の設定」を「YES/はい」にすれば、先頭行がフィールド名として扱われます。
「範囲/Range」を先頭行無しで選択して既存のテーブルにインポートすることはできないようです。(やれると思ったのですが・・・、融通きかねーなぁ^^;)
ただ、この場合も、「ウィザード」の6と同じ問題に引っかかるので、同じように回避策が必要になります。

すいません、取り留めの無い文章になってしまい、判りづらいかと思います。
補足、私の勘違い、意味がわからないなどありましたら、ご返答ください。
(朝はどうにもダメなんですよ。)

この回答への補足

おはようございます。
流れとても判り易いです。
さっそく試みてみましたが流れ3へ行く前に"外部テーブルのフォーマットが正しくありません。"とエラーが出てしまいます。
(:_;)エーン

補足日時:2001/09/29 13:52
    • good
    • 0

エクセルのバージョンはどれをお使いになっていますか?


エクセルのバージョンが古いとひょっとしてAccess2000では読めない可能性があります。

また、一手間かかりますが、エクセルからCSV形式に出力して、Accessで取り込む回避策も考えられます。

この回答への補足

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の一行目を削除してからインポートすれば良いと思いますが、やりかたが解かりません
引き続きアドバイス願えればありがたいのですがお願い致します。

補足日時:2001/09/29 09:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ