![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
ACCESSのテーブルのデータで、先頭に「000」を付与するほう右方
Access(アクセス)
-
アクセスでcsvに出力した際、頭の0が消えてしまいます
Access(アクセス)
-
Access テキスト型に対する指定桁での0埋め方法
その他(データベース)
-
-
4
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
5
アクセス 取り込み時に、桁数(テキスト型)を合わせたい
Access(アクセス)
-
6
ACCESSのデータに自動で半角スペースを入れたい
その他(データベース)
-
7
Accessデータをテキスト変換する時、小数点以下の桁数が切れてしまう
Excel(エクセル)
-
8
ACCESS VBAでテーブル内の特定のフィールドを削除 .Fields.Delete (*")"
その他(プログラミング・Web制作)
-
9
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
10
Accessのテーブルからcsv出力する際に一部のフィールドを除いて出力したい
Access(アクセス)
-
11
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
12
Accessでグローバル変数を宣言して定数を定義したい
その他(データベース)
-
13
レコード削除時に(サブ)フォームに表示される#Deleted"について"
Access(アクセス)
-
14
【Access】外部結合を行う前に抽出条件をつけたいのですが。。。
Excel(エクセル)
-
15
Accessで文字列の長さによって、フィールドの幅を自動で合わせる方法
Excel(エクセル)
-
16
Excelのデータ(数字)をテキスト型としてaccessにインポートする方法
Excel(エクセル)
-
17
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
18
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
19
アクセスのクエリでコンパイルエラーが出ます。
Access(アクセス)
-
20
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのリンクテーブルについて
-
AccessでCSVインポートのゼロサ...
-
ACCESSでのエクセルインポート...
-
accessのエクスポートエラーに...
-
bcpによる、テーブル→CSVファイ...
-
SQL Server 2000 - bulk insert
-
bcpインサートでのフォーマ...
-
DBMAGICのプログラム解析
-
エクスポート時の改行コードに...
-
既に使用されているので、使用...
-
「マスタ」と「テーブル」の違...
-
ACCESSのSQLで、NULLかNULLでな...
-
2つのテーブルから条件に一致...
-
3つ以上のテーブルをUNIONする...
-
重複するキーから一番古い年月...
-
[ BETWEEN ] vs [ >= AND <= ]
-
ACCESS 一番最新の日付の金額...
-
ACCESS2007 フォーム 「バリア...
-
Access VBA Me.Requery レコー...
-
accessテーブル作成クエリを実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessのエクスポートエラーに...
-
Accessのリンクテーブルについて
-
bcpインサートでのフォーマ...
-
エクスポート時の改行コードに...
-
ACCESSでのエクセルインポート...
-
AccessでCSVインポートのゼロサ...
-
SQL Server のデータをCSVファ...
-
SQLServer2005でフラットファイ...
-
既に使用されているので、使用...
-
symfowareのSQL文in句をバッチ...
-
MS-SQLプロシージャでファイル...
-
SybaseのBCPでファイル上書き
-
アクセスのテーブルからエクス...
-
bcpによる、テーブル→CSVファイ...
-
sqlite(spatialite_gui)での...
-
SQLServer2005 クエリ結果のフ...
-
スクリプトファイルの一括実行
-
ACCESSでのCSVデータの自動取り...
-
DBMAGICのプログラム解析
-
CSVファイルのインポートについて
おすすめ情報