質問: こんにちは。お世話になります。 VBAで、ExcelシートをAccess側でデータ型を指定してテーブルにインポートする方法 をご教授いただきたく書き込みをさせていただきました。 値("001")と数値(1)が混在する列を 整数型のフィールドに保存するというようなことがしたいです。 今までは、 1.ExcelをCSV形式で保存する。 2.インポート定義ですべてテキストを指定 3.テーブルの項目定義でデータ型を指定したところにインポート ということをおこなっておりましたが、 1.のCSV保存の際にデータの丸めが発生してしまう問題が発生してしまいました。 (※本来の値が123456789.12であるような場合に、 123456789.1とシートに表示され、そのままCSV化してしまう。) 直接Excelからですと正しくデータがインポートされるようですので、 いろんなサイトを参考に、 ・すべてテキスト型の仮テーブルを動的に作成し、 Excelシートをインポート というところまで作ってみたのですが、 これを本来のデータ型を指定したテーブルに追加しようとすると ”型が違います”エラーがでてしまって、 CSVのように無理やりデータを受け取ってはくれず どうしたらいいのか壁にぶつかって困っています。 Accessを使われている方々はどんな方法で あまりデータがきれいでないExcelシートの場合のインポートをされているのでしょうか? 検索しても同じことで困ってらっしゃる方の質問があまりないことからも 自分の知識不足で、回りくどい変な方法になってしまっている気がしてなりません。 お時間のある時に是非アドバイスよろしくお願いいたします。 Access2002:WindowsXP
回答: 読み込んだテーブルを基にクエリを作る。 例えば読み込んだテーブル名がBook1で、フィールド1,フィールド2,フィールド3,フィールド4があるとする。 新規でクエリを作り、 フィールド1: CInt([book1].[フィールド1]) フィールド2: CDbl([book1].[フィールド2]) フィールド3: CCur([book1].[フィールド3]) フィールド4 と指定すれば各々、整数、倍精度浮動小数点型、通貨型、そのままのデータ型、のデータになる。 ただし、当然のことながら"AAA"などの文字列を整数型にすればエラー値になる。