• ベストアンサー
  • 困ってます

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

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

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

  • 回答数3
  • 閲覧数2171
  • ありがとう数3

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

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

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

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

質問者からのお礼

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にすることにより、文字が切れずに インポートできました。 ありがとうございました。

関連するQ&A

  • 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上で使用した状況です。 ご教示の程、宜しくお願い致します。

  • 【再】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のインポートについて

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

その他の回答 (2)

  • 回答No.3

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

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

質問者からのお礼

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

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

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

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

質問者からのお礼

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

質問者からの補足

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

関連するQ&A

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

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

  • Access2002でExcel2002のデータをインポートしようとした際に起こるエラー

    予めExcel2002で作成したワークシート(名前付)に、Access2002から一度データをエクスポートします。 この時点では旨くいっています。 Excelに出力する理由は回帰分析等、いくつかの分析を行う為で、Accessがクエリに搭載していない関数を使用するためです。 ここで、分析結果を別シート(同一ブック内)で参照するのですが、この参照するセル範囲(名前付部分)をインポートすると実際にインポートしたいのは分析結果である数値なのですが、インポートできず「データ型の変換エラー」が発生します。 VBで書くことも検討したのですが、ロジックが大変ややこしくなることと、Excelへ出力した方が時間的に早いので、エクスポートした後、結果数値のみをインポートするという手順をとっています。 インポートしようとしているデータは(数値)(テキスト)(日付)(日付)(数値)(数値)(数値)(数値)の順で、1行目にインポートしたいデータを配置しています。 このAccessからExcelへデータをエクスポートし、ExcelからAccessへ関数の入っているセルに存在する結果数値のみを取り込む方法をお教え下さい。 よろしく御願いします。

  • Accessでインポートエラー(EXCELより)

    EXCELの社員データをACCESSへインポートするとき一部のレコードが反映されませんでした。 EXCEL>社員番号、氏名 の表をインポートしようとすると、    一部「社員番号」がインポートできない。   社員番号は二通りあります  1.社内の人間 数字8桁の番号  2.社外の人間 Guestxxx(X:数字) このうち、2がエラーで取り込めませんでした。 EXCEL上では、すべてセルの書式設定で「文字列」にしており、 ACCESS上では、データ型を「テキスト」にしています。 手入力でguest、、と入力はできました。 EXCEL>書式設定 と ACCESS>データ型は、そもそも別ものという感じもします。1の数字の社員番号がEXCEL上でテキストになっていないのでしょうか。。 ACCESS初心者です、知恵を拝借いただければ幸いに存じます。

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

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

  • エクセル→SQLサーバー エクスポート

    今あるシートのデータをSQLサーバーへエクスポートしたいのですが何か良い方法はありますか? 一度移行してしまえば新データ追加時はADOで対応していきます。 SQLサーバー→エクセルはODBCでできるのですが エクセル→SQLサーバーがわかりません。 とりあえず何枚かのシートは Accessへエクスポートして、そこからSQLサーバーへエクスポートしました。 エクセルに「エクスポート」という項目が見当たりません。 無理なのでしょうか?(2003です) よろしくお願いします。

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

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

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

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

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

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

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

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

  • Excelのデータ(数字)をテキスト型としてaccessにインポートする方法

    Excelの「セルの書式設定」を「文字列」にして、数字を入力し、accessで「インポート」すると「データ型」が「倍精度浮動小数点型」となって「1(2)」や「1&2」と入力した行がインポートできずerrorとなります(普通の数字はインポートできます)。Excelの書式設定を「ユーザ定義」→「@」としても同じです。またaccessでテーブルのデザインでそのインポートするフィルドを「データ型」としておいてインポート操作をしてもインポートされません。Excelを開きそのセルや行の書式設定を確認しましたが文字列となっています。どこが問題なのでしょうか? また正しくインポートできる方法を教えてください。 accessとExcelのバージョンは2003です。 よろしくお願いします。

専門家に質問してみよう