- ベストアンサー
VBAでエクセルで作成したファイルをCSVで出力するコードは?
エクセルで作成したファイルが、どうしてもCSV形式で保存さすことが出来ません。無理なのでしょうか。また、出力したCSVファイルでは、ある特定された文字を別の文字に置換えさせることをを自動で行うことは不可能なのでしょうか?宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 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) これでうまくいかなかったと言うことでしょうか。 そうでなければ試してみてください。
その他の回答 (3)
- Yeti21
- ベストアンサー率47% (396/830)
No.1の補足です。 後半の置き換えの件ですが、出力した後にCSVファイルの特定の 文字の置き換えができるかということでしょうか? それなら標準では無理です。 VBScriptなどで自分でロジックを作るか、下記のようなフリーソフトを 使用すれば可能です。 http://www.vector.co.jp/soft/win95/util/se271454.html
お礼
ありがとうございます。ご紹介いただいたフリーソフトは勉強してみたいと思います。今回は、出来れば簡単なコードがあればそちらを使ってみたいと思います。何を行いたいかと言うと、エクセル形式で入力専用のシートに最小限のデータ(例:8桁の西暦)を入力させ、別シートに関数を活用してあるべきデータの形(例:元号を和暦の6桁)に変えて、必要な列数だけを選択して、一旦CSV形式(全列にカンマが振られる)に出力させて、特定の行の空白列にも振られた余分なカンマを削除(置換による方法を検討)して保存したいと考えています。そうすればCSV形式のファイルがシステムに取り込むことが出来るためでです。ややこしい言い回しで申し訳ありません。
- Knl_Panic
- ベストアンサー率38% (20/52)
No.2の訂正です。 後半のマクロの最終行に下記の行が抜けていました(コピー漏れ)。 End Sub 大変失礼しました。謹んで訂正いたします。
- Yeti21
- ベストアンサー率47% (396/830)
CSVファイルへの保存例です。応用してください。 Sheets("Sheet1").SaveAs Filename:="c:\test.csv", FileFormat:=xlCSV ご質問の後半はちょっと意味がわかりませんでした。
お礼
早速のご回答ありがとうございました。初心者のためSub test()~End Subの中に、入れていましたが、「コンパイルエラー 構文エラー」と表示されました。ご迷惑をおかけします。
お礼
早速のご回答ありがとうございました。同じくCSV形式で保存するために「Sub マクロ()~End Sub」の中に記述すると「コンパイルエラー 構文エラー」と表示されうまくいきませんでした。初心者のためどこか基本的なことがわかっていないようでご迷惑をおかけします。また、Sub 置換マクロ()についても上記のコードの下に付けると、一旦CSV形式に変換して、更にそのCSVファイルの特定の文字を置き換えることが出来るのでしょうか?