
お世話になります。
※再投稿となります。
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とインポート時の仕様(制限)が異なるのでしょうか?その場合、どのようにすれば文字列が途中で切れずにインポートすることが出来るようになるのでしょうか。
以上、宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
XLS、Access2002、2010で検証してみました。
なんとも納得のいかない結果になりました。
(私の調べ方が拙いのかもしれませんけど・・・)
ご質問と同様にあらかじめメモ型のフィールドを含むテーブルを用意。
http://office.microsoft.com/ja-jp/access-help/HA …
ではExcelファイルをインポートする際に最初の8行をスキャンし
データ型の決定を行う・・となっています。
そこで、まず、2~26行目まではText型(255文字以内)
27行目に初めてメモ型(300文字)のデータをセルに入力。
Docmd.TransferSpreadSheet ・・を実行
結果
2002→何故か切れていない
2010→切れている
では、27行目のデータを2行目にコピペし保存し実行
結果
2002→切れていない
2010→やっぱり切れる??
ならば、レジストリを開いて、TypeGuessRows を検索
http://support.microsoft.com/kb/968580/ja
Windows7 & Office2010では少なくとも二か所見つかるはずです。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel
其々のTypeGuessRowsの値を0(ゼロ、フルスキャン)に変更。
2010でも切れることはなくなりました。
なんとなくバグの匂いがします。
レジストリの値を変更するのに抵抗が有る場合は
Excelファイルをオートメーションで開いて、各セルの値を順次
Accessのレコードに追加するVBAを作成すれば出来るような気がしますが
未検証です。
以上、ご参考まで。
追伸
Access2010の外部データタブ→Excel でウィザードで進めていって
途中でデータ型の指定を行ってインポート。
この際に最後の、「インポート操作の保存」を行えば
次回からは、「保存済みのインポート操作」から行えます。
CSV や TXT ファイルは「インポートの定義」を保存すれば
Docmd.transferText ・・・でインポート定義名(SpecificationName)を
利用できるのですが、TransferSpreadSheetでは無いですね。
ご回答ありがとうございます!
お返事が遅くなり申し訳ございません。
検証までやって頂いたんですね。
当初、インポート定義をやればいけると思ったのですが、Excelでは定期出来ないことが判明し、どうしようか悩んでいたところです。
あと、インポートするExcelは約4万行で100列ほどあるデータなので、順次レコード追加も厳しい状況かと。
まずは教えて頂いたレジストリの修正で、切れずにインポート出来るか試してみたいと思います。
色々ありがとうございまいました。
No.1
- 回答日時:
問題の原因を切り分けてみましょう。
手動でインポートしても同じ結果になる>>Access2010は2003とインポート時の仕様の可能性あり、手動でインポートできる方法をまず探>>VBAに置き換える
手動でインポートすればOK>>Access2010は2003と VBAで仕様が違う>>対応コードを探す
*エクセルの元ファイルが開いてるインポートがうまくいかないことがある
*インポートできない場面で共通の特徴はありませんか? 特定の文字列? 改行コード 等
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Outlook2013で外部形式日付もエ...
-
至急お願いします! プレステ4...
-
レジストリをインポートできま...
-
【再】AccessでExcelインポート...
-
エクスポートしたデータの削除方法
-
【DBDについて質問です】 Switc...
-
Thunderbirdの特定のメールだけ...
-
リンクが絶対途中で切れてしま...
-
件名や差出人をテキストファイ...
-
Macで送ったメールの添付がWIn...
-
サンダーバードのメールの受信...
-
Becky!の受信ボックスのフォル...
-
winmail.datの開き方
-
メール本文にある画像(多数)...
-
Simejiのスタンプなんですけど...
-
メール添付ファイルの拡張子がd...
-
Gmailで10MB以上のファイルが送...
-
パソコンの画像が携帯に送れない。
-
メールにフォルダショートカッ...
-
画像→右クリック→送る→メール受...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急お願いします! プレステ4...
-
レジストリをインポートできま...
-
Becky!のメールデータを、別PC...
-
googleカレンダーの再インポー...
-
IEのオートコンプリートのパス...
-
OUTLOOKのスケジュールをエクセ...
-
【再】AccessでExcelインポート...
-
Windows Live メール12のアドレ...
-
Outlook2013で外部形式日付もエ...
-
Outlook2000からのデータ移動
-
メールアドレスとメールの移行
-
AL-Mail32のアドレス帳のOutloo...
-
Accessへワークシートからのイ...
-
Outlook2016でデータ移行後の元...
-
MS Exchangeのmailbox.pstの中...
-
エクスポートしたデータの削除方法
-
OutlookのメールデータをAccess...
-
「お気に入り」を新しいパソコ...
-
OUTLOOK2003のデーターを移行し...
-
インポートについて
おすすめ情報