• ベストアンサー

VBA CSV形式で保存したいのですが

EXCELで、以下のような表を作成してあります。   A       B       C 1 あ,10 2 い,20,100 3 う,30 4 え,40,200,か 5 お,50 A列にカンマを含めたデータが入っており、 1000行程度あります。 このようなデータをCSV形式で保存したいのですが、 単純にVBAを組むとそれぞれのデータが""で囲まれます。 また、上記例の3行目(以降)のデータの終わりに「,」が 出力されてしまいます。 例:   あ,10 い,20,100 う,30, VBAで、 (1) ""で囲まれることなく、 (2) 行内のデータの個数によって,をつける位置を判断させて (3) セルに入っているカンマ区切りのデータをB列等に分離せずに 保存する方法はないでしょうか? ご教授、よろしくお願いします。

noname#30522
noname#30522

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

CSVでは無理です。ていうか、「カンマで値を区切る」形式で値の中 にカンマが含まれてれば、区切りがおかしくならないように何らか の処置をするのがものの道理ってもんです。 テキスト形式(スペース区切り)あたりを使うのが妥当な線じゃない ですかね。xlFileFormatクラスでいうとxlTextPrinterかな。もちろ ん、ファイル名末尾を.csvなどと変えてからエクセルで開くなんて 無茶をしなければ、「B列等に分離」なんてことはありません。

noname#30522
質問者

お礼

ご返答、ありがとうございます。 ご教授いただいた内容でクリアできました。 ありがとうございました。

その他の回答 (1)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

SaveAsでもできるのですが、VBAで保存した後に自分自身のファイル名が *.xls から *.csv(あるいは *.txt など) に変わってしまうので、私は個人的にはあまり好きではありません。(SaveCopyAsでファイルフォーマットを選択できればいいのですが) 要はA列の内容をそのままテキストファイルに出力すればいいのだから、ファイルをオープンして書き込む方法をご紹介しておきます。 なお、このVBAでは XXX.xls を XXX.txt というファイル名で保存しています。 XXX.csv とすると、Excelで開くときに自動的にカンマでセルに分割されてしまいますが、XXX.txt なら、開くときに形式を選択できるからです。 Sub SaveAsTxt()  Dim FName As String  Dim n As Integer, i As Integer  FName = Replace(ThisWorkbook.Name, ".xls", ".txt")  n = FreeFile  Open ThisWorkbook.Path & "\" & FName For Output As #n  For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row   Print #n, Cells(i, 1).Value  Next  Close #n End Sub

noname#30522
質問者

お礼

ご返答、ありがとうございます。 ご教授いただいた内容は、内容をよく理解し、 今後の自分の発展に役立てさせていただきます。 ありがとうございました。

関連するQ&A

  • ExcelファイルをCSV 形式で保存するには?

    ExcelファイルをCSV 形式 (Windows、カンマ区切り) (*.csv)にして書類を提出するように言われたのですが、その方法について教えてください。 データの内容は会社の詳細で、1社につき100項目のデータがあり、それが50社あります。その場合、1社目のデータをA列に、2社目のデータをB列にというように入力すればよいのでしょうか? Excel の [名前を付けて保存] ([ファイル] メニュー) を使って、CSV (カンマ区切り) (*.csv)ファイルで保存すると、各項目がカンマで区切られるのでしょうか? 1レコード目と2レコード目はどういった区切りになるのでしょうか? またファイル形式はCSV 形式でと言うことですが、提出するファイル名の拡張子を.txtとしないといけないのですが、それはどうすればいいのでしょうか?

  • エクセル:VBAで自動的にCSV形式で保存について

    複数のシートからなるエクセルブックから、決まった一つのシートを CSV形式で保存するマクロを作成しております。 その際、CSV化するシートは他のシートの値を参照し、数値が""、 もしくは"0"の場合は、表示しないとする数式が1000行まであります。 これは、CSVで保存した際に、無用なデータを含めないようにと 考えたものですが、下記VBAを作りCSV化し保存したファイルは、確かに 数値がある行のみ表示しているものの、データ量が重くなってしまいます。 Application.DisplayAlerts = False Application.Dialogs(xlDialogSaveAs).Show arg1:=MyFile, arg2:=6 この作成されたCSVをあらためて、「名前を付けて保存」でCSVで保存し、 「~には、CSV(カンマ区切り)と互換性のない機能が含まれている可能性 があります。この形式で保存しますか?・・・」の所で、「はい」を選択 すると、データ量が大変少ない量で保存できます。 おそらく、マクロで作成したCSVは、その「互換性のない機能」が含まれて いるのであろうと思いますが、必要としているのは値のデータのみです。 この「互換性のない機能」を省いてCSVで保存する方法をどなたか教えて いただけないでしょうか? 分かりにくい文章で申し訳ありませんが宜しくお願い致します。

  • Excelでcsv形式で保存するとき

    どうしてもわからないので教えてください。 Excelで、下記のように行によってデータの数が 違うデータをcsvに変換すると、 111 222 333 444 555 666 777    ↓ 111,222,333,444,555 666,777,,, と2行目に余計なカンマがついてしまいます。 これを、 111,222,333,444,555 666,777 というように余計なカンマがつかないように csvで保存する方法はありますか? よろしくお願いします。

  • EXCEL- VBA(CSVファイル→インポート)

    A列~F列になる複数(100個以上)のCSVファイルをエクセルファイルにインポートして更に個別にエクセルファイルとして保存したいのですが VBAでできるのでしょうか? 記憶マクロでやったらどうにもうまくいきません。 エクセルのVBAについては ほとんど知識ゼロなので困っております。 大変厚かましくありますが どなた様かご教授お願いできたらと思います!! 【元のファイルの状態】   ◆ファイル名「*.CSV」*は文字数それぞれ違います。   <例:tanaka.xls だったり 09福島.xls>  ◆入っているドライブ   TEXT;C:\Documents and Settings\AA_B\デスクトップ\練習  ◆A~F列にデータが入っている 【やりたいこと】    (1)A~F列はカンマ区切りで全て文字列としたい  (2)元のファイル名でエクセルとして保存したい「*.XLS」

  • ExcelのCSV形式について

    ExcelデータをCSV形式で保存するとき文字列はダブルコーテーション、数字列はそのままでカンマ区切りしたいです。確か123のCSV形式はそうなってたと思います。お手数ですが御回答、宜しくお願い致します。

  • VBA でCSV集計

    VBAをはじめて1ヶ月のものです。 VBAの集計ツールを作成していますが 思うようにいかず、お知恵をお借りしたいと考えています。     abcというフォルダ配下に以下のように4桁の日付を示す フォルダが日付毎にあります。(いくつあるかはわかりません。) さらにその配下にいくつかのcsvファイルがおいてありますが aaa.csvというcsvのみ抽出し 最終的には合体.csvのような集計CSVを作成したいと考えています。 以上よろしくお願いいたします。 (1) abc → 0812フォルダ <aaa.csv>     A列     B列    C列 1行 100     200    8月12日                       2行 100     100 3行 200     200 4行 300     100 5行 100     100 6行 200     200 7行 400     100 8行 100     100 (2)abc → 0813フォルダ <aaa.csv>      A列     B列     C列 1行   0      300    8月13日              2行 100      100 3行 100      200 4行 100      200 5行 100      200 6行 300      200 7行 300      400 8行 200      100 ↓ (3)<合体.csv>     A列     B列      C列     D列     E列     F列     G列    (日付)  (A1~A4計)(A5~A8計)(合体B+C)(B1~B4計)(B5~B8計)(合体E+F) 1行 8月12日   700      800     1500     600     500     1100 2行 8月13日   300      900     1200     800     900     1700

  • エクセル VBA 保存したCSVファイルについて

    いつもお世話になっています。 早速ですが カンマ区切りのテキストファイルをカンマ区切りで読み込んだあと変更を加え ActiveWorkbook.SaveAs Filename:="Book2.csv", FileFormat :=xlCSV, CreateBackup:=False で保存したものを メモ帳などで開いた時に 不要な箇所にカンマの不要な箇所に沢山カンマが付いてしまいます。 M列まであるのでその分の空白もカンマ区切りで保存されてのだと思うのですが これを、不要な部分の空白を除いた形で保存する方法は無いでしょうか? どうぞよろしくお願いします

  • EXCEL VBAでのCSVファイルの編集

    CSVファイル(ダブルクォーテーション)形式のファイルをEXCEL VBAにて行の編集(削除)をした後、上書き保存をしたらダブルクォーテーション区切りではなくカンマ区切りのCSVファイルの形式になってしまいます。 ダブルクォーテーション区切りのCSVファイルで上書き保存する記述があれば教えて下さい。おそらくEXCELでCSV形式の上書きはCSV2の形式で保存されるみたいです。 困っています。どなたかお助け下さい。

  • CSVファイルの保存形式について

    Outlookのアドレス帳をCSVで保存する機会があったのですが、MS-DOSカンマ区切りとWindowsカンマ区切りの違いがわかりませんでした。特に気にしなくてよいのでしょうか。それぞれ、何に適していて、どういう仕様なのか、参考までに教えていただけるとありがたいです。

  • ACCESS「CSV」形式での、保存方法。

    ACCESSで作ったデータを「CSV形式(カンマ区切り)」で保存する方法がわかりません。 今日ACCESSに初挑戦しています。(ACCESS2000を使用) 色々調べて、データを「エクスポート」すればいいというところまでは、わかりました。 テキストデータにエクスポートしたのですが、 CSV(カンマ区切り)に変更する方法がわかりません。 よろしくお願いします。 -------------------------------------------------------- 強硬手段で、拡張子を「.csv」に変更してみたのですが、 だめでした。 データ内に、改行のあるHTMLが入っています。 拡張子を強制的に変更したら、 このHTMLタグが、消えてしまいました。 --------------------------------------------------------

専門家に質問してみよう