予めExcel2002で作成したワークシート(名前付)に、Access2002から一度データをエクスポートします。
この時点では旨くいっています。
Excelに出力する理由は回帰分析等、いくつかの分析を行う為で、Accessがクエリに搭載していない関数を使用するためです。
ここで、分析結果を別シート(同一ブック内)で参照するのですが、この参照するセル範囲(名前付部分)をインポートすると実際にインポートしたいのは分析結果である数値なのですが、インポートできず「データ型の変換エラー」が発生します。
VBで書くことも検討したのですが、ロジックが大変ややこしくなることと、Excelへ出力した方が時間的に早いので、エクスポートした後、結果数値のみをインポートするという手順をとっています。
インポートしようとしているデータは(数値)(テキスト)(日付)(日付)(数値)(数値)(数値)(数値)の順で、1行目にインポートしたいデータを配置しています。
このAccessからExcelへデータをエクスポートし、ExcelからAccessへ関数の入っているセルに存在する結果数値のみを取り込む方法をお教え下さい。
よろしく御願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
ここにエクスポート処理?
DoCmd.DeleteObject acTable, "分析結果テーブル"
DoCmd.TransferSpreadsheet acImport, 8, "分析結果テーブル", "C:\分析\分析シート.XLS", False, "分析結果テーブル"
DoCmd系の命令は非同期的に実行される場合がありますので500回の繰り返しの中で
順序が崩れる場合があるのでは?(500回の経験はさすがにありませんけど)
テーブルは削除しないで(削除・作成の繰り返しは問題発生の可能性が大きくなります)
CurrentDb.Execute("delete * from 分析結果テーブル") としてレコードを削除したら
どうなりますか?
さらに発生する場合は、ステップ実行した場合にエラーが出ないのならば
DoCmd.TransferSpreadsheet・・・の処理が済むまで時間稼ぎ?を
何とかしないといけないように思えます。
No.4
- 回答日時:
インポートで失敗する時の対処法としては、1フィールドずつ数を増やすやり方が良いと思います。
どのフィールドでエラーが起こっているのか把握する一番の近道です。経験から言うと時間に関わるフィールドはエラーが出やすいと思います。またNullをスペに変えると入る場合もあります。
面倒ならば、全てをテキストにしてインポートするという荒業もあります。
どれか成功するでしょう。頑張ってください。
No.3
- 回答日時:
対症療法的ですが、データをコピーして空のシートに「値」のみ貼り付けし
そこからインポート処理でどうなりますか?
それでも同じエラー(データ型変換)なら、長整数・倍精度浮動小数点・文字列
などのところで引っかかっているかと。
回答ありがとうございました。
ご指摘の手順通りにインポートしましたが、正常にインポートできることを確認しましたのでエクセルの書式設定、アクセスのデータ型に起因する部分ではなさそうでした。
下の回答にも記入している通り、複数回処理を実行するプロセスで発生しているので、そこが大きな問題なのかどうか。。。
よく分かりません。。。
No.2
- 回答日時:
NO1です
あとで元テーブルと結合出来るよう「新規テーブル」に保存でもうまくいきませんか。
私も今実際にセルに関数が入ったものをインポートしてみましたきちんと表示できました。
インポートする際、1行目はフィールド名としておいた方が良いでしょう。
度重なる回答恐縮します。
実際には処理そのものはかなり多くのデータを扱ってるため1データについて以下の手順を繰り返し実行(VBA)しています。
(1)元データをAccessからExcelにエクスポート
(2)分析結果テーブル(Access側)を削除
(3)分析結果を分析結果テーブルとしてインポート
(4)クエリで別テーブルへデータを加工してADD
(1)~(4)の処理を概ね500回繰り返しています。
VBAで今回問題なのは(2)と(3)なのですが、ソースは以下の通りです。
DoCmd.DeleteObject acTable, "分析結果テーブル"
DoCmd.TransferSpreadsheet acImport, 8, "分析結果テーブル", "C:\分析\分析シート.XLS", False, "分析結果テーブル"
500回程繰り返すことに問題があるのかどうか…
一度データをエクスポートしたExcelのシートをインポートしようとするとエラーになるのですが、このExcelファイルを一度開けて上書き保存すれば、どういう訳かファイルのインポートからインポートはできます。がしかし、、、同じ処理をVBA(上記ソース)で実行するとすべてエラーで返ってきます。。。
どうしようもないのでしょうか。。。
No.1
- 回答日時:
インポートしようとするテーブルをデザインビューで開き、各フィールドのフィールドサイズが、Excelに入っているデータが収まりきるのかを確認して下さい。
例えば、Excelに入っているデータ(テキスト)が20文字あるのに、テーブルのフィールドサイズでは10文字になっていれば、エラーとなって、該当レコードはインポートされません。
この回答への補足
早速の回答有り難うございました。
もう少し詳しく書けばよかったのですが、Access2002の「ファイル」の「外部データの取り込み」にある「インポート」で実際にインポートしたいエクセルのファイルを指定すると「ワークシートインポートウィザード」が表示され、その中にある「名前のついた範囲」を指定しているのですが、この時点ですでに本来Excelで参照しているセルに入っているべきデータが表示されていない状況です。
これをExcel内の書式をすべて文字列にしてしまえば確かに問題は起こらないのですが、日付は日付として、数値は数値として、テキストはテキストとしてインポートしたいのですが、セルに関数が入っていると無理があるのでしょうか・・・
ちなみに、フィールドサイズは確認してみたのですが問題はありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Excel(エクセル) DATE関数で指定する「日」のセルが関数の場合の対処法 5 2022/09/14 15:46
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Access(アクセス) accessデータを指定したExcel、そして指定したセルへエクスポートするaccess VBAコー 2 2023/05/17 17:02
- Excel(エクセル) Excelの中央値の複数条件について 3 2022/05/24 21:22
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセス2003 複数の列に...
-
アクセス2010にエクセルデータ...
-
Access2010でVBAでのインポート
-
ACCESS ユニオンクエリ...
-
アクセス 日付を項目追加して取込
-
アクセスの容量がなぜか増加します
-
差込印刷での全角表示について...
-
日付型のフィールドに空白を入...
-
Accessで、1つの項目に複数の...
-
SQL文で パラメータが少なすぎ...
-
Accessのテーブルのフィールド...
-
ACCESSのクエリで抽出条件「ま...
-
アクセスのエラー「クエリには...
-
アクセスで追加した項目に全て...
-
2つのテーブルに共通するレコ...
-
テーブルでメモ型になっている...
-
Accessの桁区切りについ...
-
ACCESS 重複データを1...
-
テキストボックスにクエリ結果...
-
フィールドの更新がない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSにEXCELからインポートし...
-
ACCESS、フィールドが異なるデ...
-
アクセス2003 複数の列に...
-
Access2010でVBAでのインポート
-
Access フォームからの入力結...
-
アクセスでの、固定長でのテキ...
-
Excelで入力したデータをAccess...
-
Access(アクセス)でのインポー...
-
Access2016でフォーム内にExcel...
-
アクセス 日付を項目追加して取込
-
アクセスの容量がなぜか増加します
-
accessのデータを検索するツー...
-
Access テーブルをデータシー...
-
アクセス2010にエクセルデータ...
-
ACCESS ユニオンクエリ...
-
Access2002でExcel2002のデータ...
-
accessのデータで重複している...
-
エクセルからアクセスへデータ転送
-
支店から本社のアクセスファイ...
-
access 2003 1万件以上がカット...
おすすめ情報