Access Excelインポート時の制限について

このQ&Aのポイント
  • Access2010とWin7Proを使用して、Excelファイルのデータをインポートし、それをSQLサーバーにエクスポートするツール(Access)があります。しかし、インポート時には先頭から数行がチェックされてデータ型が自動的に決められるため、特定の行のデータが制限される場合があります。
  • 例えば、メモが100文字を超える場合、データが255文字に制限されるため、情報が欠落してしまいます。このため、現在はExcelファイルをインポートする前に、先頭行のメモに255文字以上の情報を入力し、インポート後に不要な文字を手動で削除しています。
  • しかし、この方法は手間がかかるため、より効率的な方法を探しています。Excelファイルをインポートし、制限されたデータを自動的に処理する方法はないでしょうか?
回答を見る
  • ベストアンサー

Access Excelインポート時の制限について

お世話になります。 Access2010 Win7Pro Excelファイルのデータをインポートし、それをSQLサーバーへ エクスポートするツール(Access)があります。 例えば、Excelに「ID」と「メモ」というフィールドがあり、1500行 あったとします。 また、メモには100文字程度の文字列が入力されています。 それをインポートすると、問題なくメモの100文字はインポートできます。 但し、1000行目のメモに500文字入力されている場合、それを インポートすると255文字に削られてしまいます。 これはインポートするときに、先頭から数行がチェックされて データ型が自動的に決められる為、上記のケースだとテキスト型に なってしまい1000行目のメモは255文字に削られている・・・ ということだと思います(仕様)。 なので、現状はExcelをインポートする前に先頭行のメモを255文字 以上入力した状態でインポートし、SQLサーバーへエクスポート後 テーブルの先頭レコードのメモより不要な文字(追加して入力した分)を 削除しております。 当該ツールを使って、インポート⇒エクスポートするのは日々の作業なので 毎回メモに文字を追加して、あとで削除するというのが手間でなりません。 なにかよい方法はございますでしょうか。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

>レジストリを見てみると該当するパスに「TypeGuessRows」がそもそも存在してませんでした。 見てる場所が違うのかも。。。下記のURLを参照してください。 ・Excel ODBC ドライバでデータが 255 文字に切り捨てられる http://support.microsoft.com/kb/189897/ja

naoto0216
質問者

お礼

mshr1962さま 度々のご回答ありがとうございます。 前回質問した際、レジストリのパスに「Wow6432Node」が 含まれておりましたが、回答頂いたnicotinismさまのPCが64bit版OS で32bit版のOfficeを使用されていたからかもしれません。 私のPCは32bit版Win7なので「Wow6432Node」が存在しない のは当然でした。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel と HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel の「TypeGuessRows」の値を0にすることにより、文字が切れずに インポートできました。 ありがとうございました。

その他の回答 (2)

回答No.3

Docmd.RunSavedImportExport("保存した定義名") を使ってみるとか。 http://hamay.blogspot.jp/2011/12/blog-post_8282.html

naoto0216
質問者

お礼

NotFound404 いつもご回答ありがとうございます。 私の確認ミスでした。すみません。 レジストリの「TypeGuessRows」の値を0にすることにより インポートできるようになりました。 教えて頂きました「エクスポート操作の保存」については 初めて知りました。 この方法でも検証してみたいと思います。 ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

過去の同様の質問を見つけました。参考になるかと思います。 ・【再】AccessでExcelインポート時の制限 http://okwave.jp/qa/q7543021.html

naoto0216
質問者

お礼

mshr1962さま 早速のご回答ありがとうございます。 こちらのURLは以前に私が投稿させて頂きました質問ですね(笑 (私のやり方が悪かったのかもしれませんが) 結局レジストリを修正してみても状況変わらずでした。

naoto0216
質問者

補足

当時のことを思い出せないのですが、今使用しているPCの レジストリを見てみると該当するパスに「TypeGuessRows」が そもそも存在してませんでした。

関連するQ&A

  • 【再】AccessでExcelインポート時の制限

    お世話になります。 ※再投稿となります。 Access2010のExcelインポート時の制限につきまして、ご教授頂けたらと思います。 現在、VBAにてExcelをインポートし(※)、その後、SQLサーバーへエクスポートする処理を行っておりますが、Excelの「備考」の文字数が多くなってきた為、途中で文字が切れないよう修正することとなりました。 上記(※)の処理では予めローカルに空のテーブル(temp)を作成し、そこにExcelデータをインポートしております。  DoCmd.CopyObject "", "temp", acTable, "tempcopy"  DoCmd.TransferSpreadsheet acImport, 8, "temp", strFile, True tempはtempcopyをコピーして作成しており、今回tempcopyの「備考」をテキスト型からメモ型に変更しました。 これにより「備考」の文字は途中で切れなくなりました。 ※当該mdbはAccess2003にて作成。 しかし、このmdbをAccess2010で実行すると、文字が途中で切れてしまいます。 Access2010は2003とインポート時の仕様(制限)が異なるのでしょうか?その場合、どのようにすれば文字列が途中で切れずにインポートすることが出来るようになるのでしょうか。 以上、宜しくお願い致します。

  • AccessでExcelデータをインポート

    お世話になります。  Access2003/2010  Excel2003/2010 10年程前より、Access2003で作成したツール(Excel2003形式のファイルを インポート)を利用しております。 Excelファイルは毎日追加/更新しているのですが、先日、とうとうExcel2003 の行の上限である65,536行を超えてしまいました。 今後はExcel2010形式のファイル(行の上限は1,048,546行)とし、かつ、 2010形式のファイルをインポートできるようツールの修正をしなければならなく なりました。 ツールの修正というよりは、今までAccess2003上で使用していたので、そのまま Access2010上で使用したいだけなので、修正が必要がどうかも分からない 状況です。 そこで2点質問ですが、  1.現状インポートする際は、   DoCmd.TransferSpreadsheet acImport, 8, "temp", strFile, True   としておりますが、「8」の箇所は2010形式のExcelをインポートする場合   どのように修正すればよいでしょうか。   ヘルプを見ても8(Excel2000形式)までの記載しかありません。   とりあえず8のままExce2010形式で、かつ2003の行の上限を超えている   ファイルを(66000行)インポートしてみましたが、行は削れることなく   インポートできました。  2.インポート時の文字数制限について   インポートするExcelファイルの「備考」フィールドは文字数が多いのですが、   Access2003上で使用すると全ての文字列(750文字程度)をインポート   できておりました。   しかしAccess2010上で使用すると、文字列が途中で切れる(255文字)   不具合が発生しました   インポートする際は、あらかじめテーブルを作成しておき、そこに対して   Excelのデータをインポートしております。なお、「備考」のデータ型は   メモ型です。   (255文字で切れることから)恐らくAccessがインポートする時点で「備考は   テキスト型」と判断しているから255で切れてしまうのではないか、で、切れた   文字列をメモ型に入れてるだけのように見受けられるのですが。。   2003から仕様が変わってしまったのでしょうか。   上記のことから、インポートするExcelの先頭行の「備考」に、適当な文字列   (750文字)を入力し、それをインポートすると途切れることなくインポート   できました。   ※Accessがメモ型と認識したから? ※いずれもツールをAccess2010上で使用した状況です。 ご教示の程、宜しくお願い致します。

  • エクセル2007からアクセス2002へのインポート

    エクセル2007(2003対応保存)で作成したデーターをAccess2002にインポートしたいのですが、 アクセスのインポートという文字がグレーになって、インポートできない状態になってます。 最終的には、エクセル~インポート、MySQLへのエクスポートをしたいと思っているのですが、 どうしていいのか分からず、困っています。 どなたか教えていただきたいです。

  • 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  文字列 どうにか対処する方法はございますでしょうか。 以上、宜しくお願い致します。

  • アクセスのインポートの仕方

    Windows2000/ACCESS2000を使用してます。 いつもお世話になってます。 ロータス1.2.3でエクセルに落としたデーターをアクセスにインポートさせたいのですが、うまく出来ません。 この度、アクセスで新しくデーターベースを作って、今までのデーターの移行をしたいのですが、エクセルのデーターをアクセスへインポートするやり方だと先頭行をフィールド名にしないと保存先のテーブルを選べませんでした。 先頭行のフィールド名を使わずに、データーだけを新しく作ったアクセスのテーブルに入れるにはどうしたら良いのでしょうか? 宜しくお願いします。

  • アクセスへのインポートについて

    こんにちは。アクセスへインポートするエクセルファイルが 以下の構造になっており、どうした物か分からず困っており ます。 エクセルの1シート上にA列~IF列まで、行数は1~1200 行まで使用したデータがあります。 各セルに入力されているデータは、全て半角の文字10文字です。 又、不規則にブランクがあります。   A   B C ・・・・IF 1行目 123-456  456-321 213-901 2行目 ブランク ブランク 438-698 3行目 ブランク 361-465 ブランク  ・  ・ 1200行 このデータをアクセスのテーブル、1つのフィールドに 全部インポートするやり方が分からず、途方に暮れて おります。 アクセス、エクセルお詳しい方、何卒宜しくお願い致します。

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

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

  • 【Access】Excelインポート時にエラー

    お世話になります。 <環境>  Windows7 Pro  Excel2010  Access2003 Excelに番号、コード、数量の3列(A~C列)の表があります。その表をAccessにインポートしようとすると実行時エラー2391となります。 インポートはフォーム上のボタンよりダイアログを表示し、Excelを選択させてます。 で、手動でファイル⇒外部データの取り込み⇒インポートで当該Excelを選択し、「先頭行をフィールド名として使う」にチェックを入れタイミングで「先頭行に、Accessのフィールド名として使用できないデータが含まれています。フィールド名として有効な名前が自動的に割り当てられます。」と表示されることから、表外の箇所まで取り込もうとしてエラーになっているかと思われます。 しかし、Excel上で見ても表外の箇所は空白セルで何も入力されてません。 単純に表外の認識されていた5列(D~H)を削除すると、問題なくインポートできました。 ※いったん罫線を消して再度引きなおしてもダメでした。 このインポートしようとしているExcelは、元々別のExcelシートより必要な箇所をコピペして作成したものです。なので、コピペ作業の際に目に見えないゴミのようなものが入力?されてしまったのかもしれません。 また、Excel2010で作成したものを2003形式で保存しています。なので、その辺でのバグなのかもしれません。。 ※インポートする為のExcelは客先にて作成している為、コピペ作業はどのように行われているかは不明です。こちらで検証すると問題なくインポートできます。 上記と同じような現象になった方はいらっしゃいますでしょうか。また、そのときの回避策などございましたらご教授頂けたらと思います。

  • ACCESSからEXCELへのエクスポート

    ACCESSのフォームで、スクロールする位メモ型フィールドに入力をしていますが、EXCELにエクスポートすると、約10行目以降が正常に落ちません。試しに2,000文字程程入力してEXCELにエクスポートしたら、「折り返して表示する」機能で1,000文字までは正常に表示されますが、それ以降は横に行ってしまい表示できませんでした。ACCESSのメモ型フィールドは1,000文字や10行が限界なのでしょうか?またそれ以上を正常にエクスポートする方法はあるのでしょうか。 ご存知の方教えてください。

  • access2010でメモ型がインポートできない

    以前のACCESS2000では出来ていたのですが、ACCESS2010(windows7)にバージョンアップしたところ、csvファイルのインポートで、メモ型のデータが255文字までしかインポートできなくなりました。 調べてみたところ、そのフィールドを、クエリなどで使用しているとキャスト(型変換)されるのでメモ型ではなくなり255文字の制限がかかる、との記述がありましたが、新しいテーブルを作成してインポートしてもできませんでしたので、別の原因かと思われます。 また、ACCESS2000のデータを、ACCESS2010の[ファイル]-[保存して発行]・・・・も行い、拡張子を.accdbにしてみましたが、やはり255文字を超えるインポートができませんでした。 インポート時の[設定]のところのフィールドの情報で、メモ型にしてあるフィールド名が表示されていないのが気になりますが。 文字列の引用符は ” にしています。 ACCESSはデータの25行目までを読み込んでデータ型を自動選択している、という記述もあり、1行目のデータに256以上の文字を入れてインポートもして見ましたが255文字で切られてしまいます。 よろしくお願いいたします。