• ベストアンサー
  • すぐに回答を!

Accessのファイルインポートが上手くいきません

いつもお世話になっております。 今回、お伺いしたいのは Access`2002を使用しているのですが、 データを落として保存されたエクセルファイルをインポート元にして AccessDBにインポートした際にエラーが発生しました。 インポート先はAccessのテーブルで全てテキスト型にしているのですが、 インポートした際に、同じ列の数字のものはインポートされているのですが、 アルファベットが入っている列のものがエラーとなって外に出されてしまいます。 私としましては、全てテキスト型で空文字受付状態であれば、 全てインポートされる物だと思っていたのですが、 エラーになってしまいます。 何か対処方法などご存知方、お教え頂きたくおもいます。 どうぞよろしくお願い致します。

共感・応援の気持ちを伝えよう!

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

Access2002・2010(多分2013も)で フィールドのデータ型を設定してあっても インポートの際にはAccessが頑固一徹にデータ型を決めてしまいます。 Excelの場合はデータ行で先頭から8行を空読みして決定しています。 これはレジストリに登録されています。 レジストリエディタを立ち上げ Ctrl + F で Typeguessrows を検索すると(当方では最初に見つけるまで1分程度) WindowsXPなら HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel にあるかと思います。 複数個所(Windows7 & Office2010なら二か所でした)にあることも。 規定値は、8 になっていますので この値を10進数なら30位の適当な大きな値にするか 0 にすればすべてを空読みしてからデータ型の決定を行います。 (0 だとモノによっては時間が掛かるかも) CSVファイルなら、Maxscanrows を検索してみてください。25行になっているかと。 FF1 FF2 1  123 2  123 3  123 4  123 5  123 6  123 7  123 8  123 ここまでで数値型に決定される 9  abc データ型が違うので除外される レジストリの変更をすれば、その後はデータ型に注意しなくともすみますが、 権限の問題でRegedit.exe を立ち上げられない(変更ができない) レジストリの変更に不安 な場合は、 先頭に近いセルの値に一つにシングルクォーターしょんを付け、123 → '123 にしてしまうことです。 そうすればすべてテキスト型で読み込まれます。 なお連続している順番が 数値→数値・・・・・・・・・テキスト だと変換エラーになりますが テキスト→テキスト・・・・・・・数値 だと数値もテキスト型として読んでくれます。 テキスト型はある意味オールマイティです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 アルファベットのテーブルヘッダも一緒に読み込ませることで 全てのデータがインポートされました。 あとで削除して対応したいと思います。

その他の回答 (1)

  • 回答No.1

私も以前同じことが起こりました。 そのときは、アクセスでインポートする際に、最初の数データでデータ型が判断され、 数値型と読み取られてしまっていました。 同じ現象かはわかりませんが、 読み取れないフィールドの最初のほうのデータに文字列が入っているデータを入れて インポートしてみてはいかがでしょうか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

なるほど、データ型のダミーを入れてご認識をさせないようにすると言うことですね。 試してみます、ありがとうございました。

質問者からの補足

結果報告です。 事前に「あ」を全てのフィールドに入れてみて、 インポートしましたが、インポートで 変わらずエラーが発生しました。

関連するQ&A

  • Accessのインポートについて

    マイクロソフトアクセス2010でテーブルを作り、そこにCSVファイルを読みこませたいです。 テーブルのフィールドはテキスト型です。 例えば、Table_TESTというテーブルにF1というテキスト型のフィールドを設けます。 Access標準のTEXTインポート機能を使い、インポートを行おうとします。 CSVファイルのデータは、「12345678912345678ABCD」といったように数値とアルファベットです。 なぜか、このようなデータをインポートする時にデータ変換エラーと表示されて、正しくインポートできません。 これは、なぜこのような現象が起こるのでしょうか?

  • Access2000 テーブル→インポート→英数字混在のものはインポートできず

    Access初心者で4回目のインポートです。 Access2000 テーブル新規作成→インポート→英数字混在のものはインポートできず、同じ列でも数字はインポートされていました。 商品コードが英数字混在で、1万以上あるのです。 どうしたら、インポートできるのかご教授お願いします。OSはVistaです。

  • ACCESS97 : レコードが長いファイルのインポートについて

    ACCESS97で、文字列を文字数ではなくバイト数で扱うことは可能でしょうか。 1レコードが20,000ByteあるテキストファイルをACCESS97のテーブルに インポートしようとしています。 インポート先のテーブルのフィールドをすべて「メモ型」にしたのですが、 インポート定義を利用してインポートを行おうとすると、 「レコードが大きすぎます。」というエラーが発生します。 そこで、プログラムでファイルを1レコードずつ読み込みながらテーブルに インサートしていく方法を取ろうかと思います。 テキストファイルは半角と全角が混在しているのですが、困ったことに 全角のデータが入るべきところに半角が混ざっている可能性があります。 たとえば、全角10文字入るべき場所に半角の空白が20文字入っていると いうような状態です。 この状態で StrConv関数でUnicodeに変換してからMidB$関数で文字を抜き 出すと、フィールドがずれてきます。 1文字目から10文字分、ではなく1Byte目から10Byte、などというように文 字列を扱うことができれば、全角と半角がどのような位置で混在していても 関係なくプログラム上で扱うことができると思うのですが,方法がわかりません。 また、これ以外で長いレコードのファイルをインポートできる方法があれば 教えていただきたいと思います。 長くなってしまいましたが、ご回答をいただけますようよろしくお願いいたします。

  • Access(アクセス)でのインポートについて

    テーブルのインポートでエクセルファイルをインポートしたいのですが「ワークシートインポートウィザード」の画面でテーブルを指定して保存すると 「Microsoft Access」の画面で「すべてのデータをテーブルに追加できませんでした。 キー違反のため、0件のレコードのデータが失われ、0件のレコードが削除されました。」と出てきて、保存できません。 もとのテーブルのデータ型を使ってインポートするにはどうしたらいいのでしょうか。よろしくお願いします。 インポートする元のデータ(エクセル)とインポート先(アクセス)の関係は次の通りです。 エクセルファイル    アクセスのテーブル (セルの書式設定)   データ型、フィールドサイズ --------------------------------------------- 数値          数値型、長整数型 文字列         テキスト型、16 インポートする前に元のエクセルデータをアクセスのデータ型に合わせただけではダメなのでしょうか

  • Access97 Excelファイルのインポート

    はじめまして、こんにちわ。 早速ですが、質問させてください。 Access97で既存のテーブルにExcelファイルをインポートした際にエラーがでてインポートできないファイルがありました。その原因を調査している次第です。 Excelファイルは様々な担当者に作成いただく予定ですので、エラーの再現性を確認して、原因となる作業を予め禁止しておきたいと考えております。 (1)ファイル→外部データ取込→インポートからインポートするExcelファイルを選択し、インポートボタンを押したところ、『ファイル○○にアクセスできません。このファイルが存在するか、またファイルの形式が正しいか確認してください』と言うエラーが出ます。 実際にそのファイルは開けますし、同じように作成したファイルはインポートできるものもあります。 中身を全てコピーし、新規作成したExcelファイルに貼り付けて名前をつけて保存したものをインポートすると、問題なくインポートできました。 どういった作業をすると、上記エラーが出るようなファイルになってしまうのでしょうか。 (2)ファイル→外部データ取込→インポートからインポートするExcelを選択し、インポートボタンを押した後、ワークシートインポートウィザードで『先頭行をフィールド名として使う』をチェックすると、『先頭行にAccessフィールド名に使用できない文字が含まれています。』というエラーが出ます。 調べてみると、空白の列がフィールドとしてインポートされるようになっています。Excel上では何も表示されていない列で、その列を削除すればエラーがなくなります。 どういった作業をすると、空白の列や行がインポートされるようになってしまうのでしょうか。 お手数ですがよろしくお願い致します。

  • CSVファイルインポート時の制限について

    AccessVBAでcsvファイルをインポートするマクロを作っています。 現在、インポート定義を利用して、データ型を指定したインポートができているのですが、1点だけ問題があり、質問します。 インポートするcsvファイルのA列にIDが入力されています。 そのA列の末尾に、ID(数値型)ではない「<b>32</b><br />」という値が入っています。 Accessのテーブルでは、このIDのフィールドは数値型で管理している為、この1レコードだけ エラーとなり、エラーテーブルが作られ、また、インポート先のテーブルには空のレコードができてしまいます。 この末尾の行については、IDではない「<b>32</b><br />」以外は何もデータが入っていない為、 インポートする必要がありません。 もし可能であれば、csvファイルのA列(Accessテーブルでは数値型のIDというフィールド)が数値ではない場合、 その行のインポートをスキップするような処理がVBAで作成できるとよいのですが、可能でしたら教えてください。

  • Accessにインポートしたら並び順が変わっちゃった

    Access2000 を使っています。 ExcelデータをAccessテーブルにしようとしましたが、全項目をテキスト型で入れたいのに、自動的に各項目の型が変わってしまうので、一旦CSVに落としてAccessにインポートしました。 ところが、インポートされたテーブルではレコード順が違っちゃっているんです。 総数は変わっていませんから、全て入ってはいるんでしょうが。 いったい何がいけないんでしょうか。多量のデータをインポートするのに不安でいけません。誰か教えて下さい。

  • Accessへのインポートについて

    ExcelからAccessへデータをインポートするとどうしても文字列で09と表示しているところがインポートエラーになり空欄になってしまいます。前に0(ゼロ)がついているからだと思うのですが、インポート後テーブルでデータ形式を変更し入力すればいいんですが余りにも量が多い為、正常にインポートできるようにする方法はないでしょうか?

  • アクセス:インポートできないデータ

    色々な型のデータが入ったエクセルデータをアクセスにインポートした時に出るエラーに関してです。 数値と文字列が含まれているためにアクセスのデータ型を”テキスト型”(フィールドサイズ255 書式@)にしております。しかしインポートすると文字列のデータがはじかれます。 アクセス側をテキスト型に設定すればどんなデータが来ても受け入れ可能だと思っていました。 数値、文字列両方のデータがインポートできる設定を教えてください。

  • Access Excelのインポートについて

    お世話になります。 Access2010 Excelインポート時の仕様についてご教示下さい。 フォーム上に「インポート」ボタンを設置し、ボタンを押すと ファイル選択ダイアログが表示され、そこで選択されたファイルを インポートしています。 DoCmd.TransferSpreadsheet acImport, 10, "temp", strFile, True ※strFileはダイアログにて選択されたファイルのパス インポートする前に事前にテーブルを作成しておき、そこに Excelのデータがインポートされます。 事前に作成しておくテーブル(temp)のデータ型は以下の通りです。 ID オートナンバー 契約開始日 日付/時刻型 契約終了日 日付/時刻型 案件名   テキスト型 価格    テキスト型 ※Excelの「価格」は通貨型となっておりますが、いくつかのセルに  文字列が入力されている為、テキスト型としてます。 <質問> インポートすると、「価格」フィールドにてデータ型の変換エラーが 発生します。エラーテーブルを確認したところ、Excelの「価格」に 文字列が入っている行でした。 予めテキスト型を用意しておいても、文字列の行はエラーとなって しまいます。なお、価格(数値)が入力されているものは、文字列として インポートされています(左詰めになっている)。  100000  50000  10000  80000   ・  50000  空白  ← 本来は文字列が入力されている。 予めテキスト型を用意しておいたとしても、インポート時の仕様?で 先頭から数行が数値なら数値フィールドと認識されてしまって、 文字列が削れ落ちてしまうのかなと。 ちなみに、インポートするExcelの先頭行の価格を「'100000」にして インポートしたところ、ちゃんとインポートはできましたが、 2行目以降は¥マークも含めた文字列でインポートされてしまいました。  100000  ¥50000  ¥10000  ¥80000   ・  ¥50000  文字列 どうにか対処する方法はございますでしょうか。 以上、宜しくお願い致します。