こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAでエクセルで作成したファイルをCSVで出力するコードは?

エクセルで作成したファイルが、どうしてもCSV形式で保存さすことが出来ません。無理なのでしょうか。また、出力したCSVファイルでは、ある特定された文字を別の文字に置換えさせることをを自動で行うことは不可能なのでしょうか?宜しくお願いします。

投稿日時 - 2006-09-29 16:58:33

QNo.2439638

暇なときに回答ください

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

こんにちは。
ExcelブックをCSV形式で保存するにはSaveAsメソッドの保存ファイル名のあとに","で区切り、"xlCSV"のファイル形式を指定すれば行うことができます(自動的にカンマ区切りになります)。書式は下記の通りです。

ActiveWorkbook.SaveAs("ファイル名.csv",xlCSV)

また、特定の文字を別の文字に変換する場合ですが、正直マクロより手でやったほうが早いのですが、どうしても、と言うことであれば、下記のマクロで行うことができます。

Sub 置換マクロ()
OpenText("CSVファイル名")
Cells.Replace What:="置換前の文字", _
    Replacement:="置換後の文字", _
    LookAt:=xlPart, SearchOrder :=xlByRows, _
MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
ActiveWorkbook.SaveAs("CSVファイル名",xlCSV)

これでうまくいかなかったと言うことでしょうか。
そうでなければ試してみてください。

投稿日時 - 2006-09-29 17:31:07

お礼

早速のご回答ありがとうございました。同じくCSV形式で保存するために「Sub   マクロ()~End Sub」の中に記述すると「コンパイルエラー 構文エラー」と表示されうまくいきませんでした。初心者のためどこか基本的なことがわかっていないようでご迷惑をおかけします。また、Sub 置換マクロ()についても上記のコードの下に付けると、一旦CSV形式に変換して、更にそのCSVファイルの特定の文字を置き換えることが出来るのでしょうか?

投稿日時 - 2006-10-01 16:21:11

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

No.1の補足です。
後半の置き換えの件ですが、出力した後にCSVファイルの特定の
文字の置き換えができるかということでしょうか?
それなら標準では無理です。

VBScriptなどで自分でロジックを作るか、下記のようなフリーソフトを
使用すれば可能です。

http://www.vector.co.jp/soft/win95/util/se271454.html

投稿日時 - 2006-09-29 21:10:46

お礼

ありがとうございます。ご紹介いただいたフリーソフトは勉強してみたいと思います。今回は、出来れば簡単なコードがあればそちらを使ってみたいと思います。何を行いたいかと言うと、エクセル形式で入力専用のシートに最小限のデータ(例:8桁の西暦)を入力させ、別シートに関数を活用してあるべきデータの形(例:元号を和暦の6桁)に変えて、必要な列数だけを選択して、一旦CSV形式(全列にカンマが振られる)に出力させて、特定の行の空白列にも振られた余分なカンマを削除(置換による方法を検討)して保存したいと考えています。そうすればCSV形式のファイルがシステムに取り込むことが出来るためでです。ややこしい言い回しで申し訳ありません。

投稿日時 - 2006-10-01 16:32:50

ANo.3

No.2の訂正です。
後半のマクロの最終行に下記の行が抜けていました(コピー漏れ)。

End Sub

大変失礼しました。謹んで訂正いたします。

投稿日時 - 2006-09-29 17:33:58

ANo.1

CSVファイルへの保存例です。応用してください。

Sheets("Sheet1").SaveAs Filename:="c:\test.csv", FileFormat:=xlCSV

ご質問の後半はちょっと意味がわかりませんでした。

投稿日時 - 2006-09-29 17:19:01

お礼

早速のご回答ありがとうございました。初心者のためSub test()~End Subの中に、入れていましたが、「コンパイルエラー 構文エラー」と表示されました。ご迷惑をおかけします。

投稿日時 - 2006-10-01 16:05:11

あなたにオススメの質問