アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
※再投稿となります。
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とインポート時の仕様(制限)が異なるのでしょうか?その場合、どのようにすれば文字列が途中で切れずにインポートすることが出来るようになるのでしょうか。


以上、宜しくお願い致します。

A 回答 (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では無いですね。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!
お返事が遅くなり申し訳ございません。

検証までやって頂いたんですね。

当初、インポート定義をやればいけると思ったのですが、Excelでは定期出来ないことが判明し、どうしようか悩んでいたところです。

あと、インポートするExcelは約4万行で100列ほどあるデータなので、順次レコード追加も厳しい状況かと。

まずは教えて頂いたレジストリの修正で、切れずにインポート出来るか試してみたいと思います。

色々ありがとうございまいました。

お礼日時:2012/06/22 11:25

問題の原因を切り分けてみましょう。



手動でインポートしても同じ結果になる>>Access2010は2003とインポート時の仕様の可能性あり、手動でインポートできる方法をまず探>>VBAに置き換える

手動でインポートすればOK>>Access2010は2003と VBAで仕様が違う>>対応コードを探す


*エクセルの元ファイルが開いてるインポートがうまくいかないことがある
*インポートできない場面で共通の特徴はありませんか? 特定の文字列? 改行コード 等
    • good
    • 0

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

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