AccessVBAでCSVインポート時にゼロサプレスをせずに行いたいです。
現状は下記のソースでインポートしていますが数字のみが入っているテキスト項目でゼロサプレスが行われてしまいます。
DoCmd.TransferText acImportDelim, , [テーブル名], [ファイル名]
下記のものについては事情があって対処として厳しいです。
ゼロサプレスのみを止めるよい方法はないでしょうか。
■インポート定義を使用する
⇒50種類ほど列項目が異なるテーブルがあり、また時々フォーマット変更があるため事前に定義しておくことは難しい。
■表示フォーマットを指定する
⇒5桁項目に4桁のデータであったり3桁のデータである場合があるがそれらをそのまま保持したい。
■CSV作成時にダブルクオーテーションで囲む
⇒CSVの作成側に対応依頼はしたができないとの回答があった。
現状としてわかっていることとしては、値をダウブルクオーテーションで囲うことでゼロサプレスを回避できることはわかっているため、
Accessマクロの中でExcelを呼び出しダウブルクオーテーション付で保存できないかと考えていますがうまくいっていない状況です。
Access単独、Excelを使う方法などゼロサプレスを回避できる方法をご教示願います。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
MS社のお節介?を止める手段は無いものと思います。
地道にフォーマットが変更になるたびに毎回インポートウィザードで
データ型の指定を行うか。
インポート定義の修正をVBAで行うか
http://www.ruriplus.com/msaccess/tch/tch_040.html
ファイルそのものをAccessで正常に読み込めるように
各カラムの修正を正規表現などを駆使して行うか・・・
ファイルの作成元に泣きつくか報酬をはずむか・・・
だと思います。
近道は無いんじゃないかな?
No.2
- 回答日時:
そのCSVファイルが
0012,asd,234,2012/1/1
のように区切り記号の『,』が他では使われていない場合
"1,234"のような桁区切りが無いなら少しは簡単かもしれない。
ファイルを読み込んで、Split関数で各カラムに分けて配列に
格納します。
各配列の要素ごとにデータ型の推測をします。
Isdate、Isnumeric、後述のIsZeroを関数にして使い大きく分けます。
数値型のものはさらに桁数や小数点以下をみてInteger,Long,Doubleに分類
これを十行程度おこなってデータ型を決定して
そのデータ型を元にテーブルを作成してインポート処理。
0012,asd,234,2012/1/1
1234,asd,234,2012/1/1
のようなカラム中でゼロフィルでないものが含まれない場合は
(常にゼロフィルである場合)説明下手
もう少し単純に、IsZeroでFalseになった場合だけ、Replaceで
前後を""で括ったCSVファイルを別途出力してそれをTransfer・・
してやれば良いと考えます。
少しは参考になる・・・かな?
Sub isZero()
Dim oREG As Object
Dim arg As String
Dim argCol As Variant
Dim i As Integer
arg = "0012,asd,234,2012/1/1,0.12,,0"
argCol = Split(arg, ",")
Set oREG = CreateObject("vbscript.regexp")
With oREG
.Pattern = "^0+[0-9]"
.IgnoreCase = False
.Global = True
End With
For i = LBound(argCol) To UBound(argCol)
Debug.Print argCol(i), oREG.test(argCol(i))
Next
End Sub
No.1
- 回答日時:
テーブルの列定義で、すべてテキスト型にしたらどうなりますか?
私だったら、CSVファイルをSEQに行単位で読み込んで、カンマで分解して列に格納します。
この回答への補足
テーブル定義ではテキスト型としていますがゼロサプレスされてしまう状態です。
また行単位読み込みですが、値にカンマやダブルクオーテーション、バックスラッシュが入っているため、
1文字単位での処理が必要となってしまいパフォーマンス面で厳しいです。
(200カラム程度で1万レコードを読み込むためVBAでロジックを作ることは極力避けたいです)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
- Excel(エクセル) PowerQueryで行数の指定はできますか? 2 2022/08/26 11:13
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) スキルシートのエクセルの項目に 2 2023/04/04 22:41
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
アクセスでcsvに出力した際、頭の0が消えてしまいます
Access(アクセス)
-
Access テキスト型に対する指定桁での0埋め方法
その他(データベース)
-
ACCESSのテーブルのデータで、先頭に「000」を付与するほう右方
Access(アクセス)
-
-
4
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
5
Excelのデータ(数字)をテキスト型としてaccessにインポートする方法
Excel(エクセル)
-
6
ACCESSのデータに自動で半角スペースを入れたい
その他(データベース)
-
7
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
8
Accessで文字列の長さによって、フィールドの幅を自動で合わせる方法
Excel(エクセル)
-
9
csvファイルのインポート
その他(データベース)
-
10
【Access】外部結合を行う前に抽出条件をつけたいのですが。。。
Excel(エクセル)
-
11
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
-
12
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
13
アクセスのクエリでコンパイルエラーが出ます。
Access(アクセス)
-
14
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
15
INSERT INTO ステートメントに認識できないフィールド
その他(データベース)
-
16
アクセスのテーブルデータをCSV出力し、Nullフィールドは"にしたい場合
その他(データベース)
-
17
Accessクエリでの、LIKE条件
その他(データベース)
-
18
Accessデータをテキスト変換する時、小数点以下の桁数が切れてしまう
Excel(エクセル)
-
19
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
20
ダブルコーテーション付きでCSV出力
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのテーブルからエクス...
-
MS-SQLプロシージャでファイル...
-
エクスポート時の改行コードに...
-
既に使用されているので、使用...
-
SQLServer2005でフラットファイ...
-
Access csvファイルで出力したい
-
ACCESSでのエクセルインポート...
-
Accessのリンクテーブルについて
-
CSVファイルのインポートについて
-
accessのエクスポートエラーに...
-
bcpによる、テーブル→CSVファイ...
-
「マスタ」と「テーブル」の違...
-
ACCESSのSQLで、NULLかNULLでな...
-
ACCESS2007 フォーム 「バリア...
-
データの二重表示の原因
-
SQLServer 分散トランザクショ...
-
3つ以上のテーブルをUNIONする...
-
Access VBA [リモートサーバー...
-
クエリのキャンセルがいつにな...
-
AccessのSQLで、FROM句の構文エ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessのエクスポートエラーに...
-
Accessのリンクテーブルについて
-
エクスポート時の改行コードに...
-
symfowareのSQL文in句をバッチ...
-
SQL Server のデータをCSVファ...
-
AccessでCSVインポートのゼロサ...
-
SQLServer2005でフラットファイ...
-
既に使用されているので、使用...
-
bcpインサートでのフォーマ...
-
ACCESSでのエクセルインポート...
-
アクセスのテーブルからエクス...
-
bcpによる、テーブル→CSVファイ...
-
SybaseのBCPでファイル上書き
-
Access97の文字化けについて
-
SQL Server 2000 - bulk insert
-
MS-SQLプロシージャでファイル...
-
スクリプトファイルの一括実行
-
CSVファイルのインポートについて
-
アクセスのデータのエクスポート
-
[SQL Server] コマンドプロンプ...
おすすめ情報