プロが教える店舗&オフィスのセキュリティ対策術

カンマ区切りのCSVファイルをテキストとして読み込んだ時の挙動についてお伺いします。

現在、excelマクロで印刷用のファイルとCSVを作成するプログラムを作っています。
以下、流れになりますが、

1.外部サイトからCSVファイルをDL
2.マクロファイルを開いて1のCSVを指定する。
3.テキストウィザード処理(マクロの記録を流用)を含めマクロが実行される
4.印刷用のxlsxファイル(とCSV)が作成される。
5.4で作成されたCSVファイルを他システムに流し込む。

DLしてきたデータ数(175)がある一定のレコード数(例えば180)より少ないと、
5データ分が「,」としてなぜか埋まっています。
テキストにして初めてわかりましたが、excelファイル上だともちろん何もないので気づきませんでした。
その状態で5をすると、5データ分が空データ扱いになりエラーが出てきてしまいます。

データの量は可変なので、上記の例だと180より少ないレコード数の場合、差分行をdeleteしています。

ただテキストウィザードで1つずつ進めてみると、データ量にかかわらずゴミがないデータが作成されているので、
違いがわかっていません。

ご存知の方がいましたら、ご教授お願いします。

以下、3の処理です。
openfileは2で指定したフルパスファイルで、Fname2はファイル名を指しています。
With ActiveSheet.QueryTables.Add(Connection:="text;" & openfile, Destination:=Range("$A$1"))
.Name = Fname2
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 932
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 1, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 1, 2, 1, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False

A 回答 (1件)

可能性のひとつとして読んでください。



アクティブシートの$A$1セル以降にcsvファイルが読み込まれますが、そもそもアクティブシートの180行目までデータが入っていませんか?
csvファイルを読み込む前の状態において、見た目は何もなくても、空白が入力されている可能性があります。
一旦、全行削除してから取り込みを行えば、イケるような気がします。
    • good
    • 0
この回答へのお礼

アドバイス有難うございます。
せっかく教えて頂きましたが、大きいファイルと小さいファイルで試したりなどしているうちに、現象が収まっていました。
ただ、ご回答のことは気づかなかったのでそれはしておきます。
有難うございます。

お礼日時:2016/03/23 09:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!