2011-08-16 4 views
6

Excel 2003でマクロを使用してCSVファイルを作成した場合、40個以上の列があり、最後の3個はオプションなので、XLSに空の値がたくさんあります私がエクスポートサブルーチンを実行すると、すべての行に後続のカンマを入れません。なぜですか?ので:あなたはテキストまたはCSV(カンマ区切り)形式のファイルを保存する場合、Microsoft Office Excelでhttp://support.microsoft.com/kb/77295 -.-csvファイル内のExcel後続カンマのバグ

、Excelは、ワークシートの各列間のタブまたはカンマを置きます。ただし、特定のテキストファイルは、16行ブロックに異なる数のタブまたはコンマで保存されることがあります。ここ

周りにその推奨の仕事です:

Excelは、すべての空の列のタブやカンマ区切り文字を保存していることを確認するには、ファイルの最後の列は、少なくともすべての16で一部のデータが含まれていることを確認ファイル全体の行。行のブロックにデータが含まれていない場合は、最後の列のセルに16行ごとにスペースやその他の文字を追加するか、ワークシートの列の順序を変更してワークシートの最後の列に常に情報が含まれるようにします。

-.-マイクロソフトに行く! -.-

私の主な問題は、生成されたファイルが、現在のようにその特定のフォーマットを必要とするスコープ外の別のプログラムによって解析されることです。フィールドが16行ごとに空白を追加しています。空ですが、これはそうしているようですが、データ処理部がその空白について不平を言っています...それらを信じられますか?

はとにかく私はまた、フラグを追加し、検索機能でそれを削除しようとしましたが、ファイルを保存OFCときは、再度区切り文字を奪うだろう...私の歴史を読み取るための

おかげであり、p

提案がありますか?

編集:残念なことにExcelを使用する必要があります。データは別のユーザーによってExcelシートから手動で入力されますが、vbaコードはテンプレート生成などに多くのことがあります。これは私が持っている唯一の問題ですプロセス全体を変更することは実行可能ではありません。

+0

手動ループ細胞および出力CSVにVBAを使うのか? –

+0

これは私が現在行っていることです。 – isJustMe

+1

vbaを使用して手動でセルを反復し、バッファにCSVを作成してディスクに書き込むと、そのKB記事は組み込みのCSV作成に関連して適用されません? –

答えて

5

マニュアル例。

Dim r As Range: Set r = Range("A1:C10") '// or ActiveSheet.UsedRange for everything 
Dim buffer As String, delimiter As String, c As Range 
Dim i As Long 

For Each c In r 
    If (i Mod r.Columns.Count) = 0 Then 
     If (Len(buffer)) Then delimiter = vbCrLf 
    Else 
     delimiter = "," 
    End If 
    buffer = buffer & delimiter & """" & CStr(c.Value) & """" '//or c.text to preserve formatting 
    i = (i + 1) 
Next 

Open "c:\xxx.csv" For Output As #1 
    Print #1, buffer 
Close #1 
+0

パーフェクト!正確に私が必要なもの! – isJustMe

+0

ちょっとアレックス、私はあなたがこの1つ私を助けることを願っています:http://stackoverflow.com/questions/8605804/this-custom-validation-is-not-working-buti-dont-know-whats-happenningありがとう! – isJustMe

0

提案1)Excelを使用してCSVファイルを生成しないようにしてください。

データソースは? Excelはどこからデータを取得しますか?おそらく、仲介者としてExcelを使用する代わりに、元のデータソースで何かを実行してCSVを生成することができます。本当に大きなハンマーが好きなら、Biztalkはデータ入力/出力操作のための究極のMSツールです。 CSVファイルを生成するカスタムC#プログラムを一緒に投げることは、数時間で完了できます。

簡潔に:可能な限り、より良いツールを使用してください。

0

データにコンマが含まれていない場合は、1行の列数をカウントし、十分でない場合はカンマを末尾に追加するテキストリーダーを作成するのは非常に簡単です。それは理想的ではありませんが、カスタムExcel to CSVコンバータを作成するよりも簡単です。

+0

提案していただきありがとうございます!私は多くのカンマを持っていますが、フィールドのいくつかは説明フィールドです、他のものは小売コストです..など、 – isJustMe

0

最も簡単な方法:

ActiveWorkbook.SaveAs "MyFileNameAndDir.csv", xlCSV, Local:=True