お世話になります。
※再投稿となります。
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で質問しましょう!
似たような質問が見つかりました
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) accessデータを指定したExcel、そして指定したセルへエクスポートするaccess VBAコー 2 2023/05/17 17:02
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IEのオートコンプリートのパス...
-
至急お願いします! プレステ4...
-
VISTAで秀丸メールからthunderb...
-
Becky!のメールデータを、別PC...
-
アウトルックのインポートについて
-
Accessへワークシートからのイ...
-
メール本文にある画像(多数)...
-
oledata.msoというファイルにつ...
-
メールがアウトルックへ移行す...
-
リンクが絶対途中で切れてしま...
-
サンダーバードの送信済みトレ...
-
『Thunderbird』 受信トレイの...
-
postfixメールデータとユーザデ...
-
Windows LIVEメールの受信・送...
-
Macで送ったメールの添付がWIn...
-
件名や差出人をテキストファイ...
-
サンダーバードのメールの受信...
-
自動仕分けウィザードの、デー...
-
Outlookのpstファイルが勝手に...
-
受信トレイのスクロールバーの位置
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レジストリをインポートできま...
-
至急お願いします! プレステ4...
-
Becky!のメールデータを、別PC...
-
OUTLOOKのスケジュールをエクセ...
-
Accessへワークシートからのイ...
-
IEのオートコンプリートのパス...
-
タブレットかスマホでGmailの連...
-
Outlook2013で外部形式日付もエ...
-
AL-Mail32のアドレス帳のOutloo...
-
【再】AccessでExcelインポート...
-
メールの移し方を教えてください
-
iphoneからパソコンに画像をイ...
-
パソコンを買い替えますが、今...
-
アドレス帳のコピー
-
メール、エクスポートの設定は?
-
OutlookexPress6をWindows7に移...
-
Outlook2016でデータ移行後の元...
-
windows mail へのメールの引っ...
-
OUTLOOK2000・連絡...
-
アウトルックのメールを新しい...
おすすめ情報