• 締切済み

EXCELからCSVファイルの出力方法について

EXCELについて質問です。 エクセルのシートに入力した内容をCSVファイルで出力したいです。 当方の希望としまして、いくつかあるシートの中で、希望のシートだけCSVファイルを出力し、出力する際は「CSVファイルを出力」のようなボタンをクリックすれば、CSVファイルが出力されるものです。 初心者ですので、できるだけ詳しく教えて頂きたいです。

みんなの回答

回答No.5

簡単に分かりやすくマクロの登録から実行までを下記に 記載したつもりですが、伝わらなかったら申し訳ありま せん。それでは Excelを立ち上げ、ツール→マクロ→VisualBasicEditorを クリックします。次に立ち上がったVisualBasicEditorの 挿入→標準モジュールを押すと、Module1(コード)が開く のでそこに下記のソースをコピペしてください。 Sub Macro1() Application.DisplayAlerts = False main_f = ActiveWindow.Caption out_pass = ActiveWorkbook.Path & "\" Out_name = ActiveSheet.Name Sheets(Out_name).Select Sheets(Out_name).Copy ActiveWorkbook.SaveAs Filename:= _ out_pass & Out_name & ".csv", _ FileFormat:=xlCSV, CreateBackup:=False ActiveWindow.Close Application.DisplayAlerts = True End Sub コピペがおわりましたら、エクセルにもどり任意の ファイル名で保存してください。例として sheetout_csv.xlsとして保存します。保存先は どこでもかまいませんが、閉じずにそのままにして おいてください。 次に、061156さんがシート別にcsv出力したいファイルを Excelで開き、出力したいシートをクリックします。 次にツール→マクロ→マクロを押して表示されている sheetout_csv.xls!Macro1を「実行」ボタンを押して実行 します。これで任意のシートのCSVファイル出力は 完成です。出力先はシート別にcsv出力したいファイルと 同じ場所に「選択したシート名.csv」で出力されます。 ボタン押すと出力されるようにもできますが記載が複雑に なりそうなのでこれで^^; 以上です。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

#3 です。 すみません。Worksheet オブジェクトに SaveAs メソッドがあるのを すっかり忘れてました。#3 はもっと簡単に書けます。 ' // アクティブシートを CSV で保存2(標準モジュール) Sub CsvOutputSample2()    ' // Excel の CSV 出力機能を利用します     Dim vOutFile As Variant     ' // 保存ファイル名を問い合せて、バリアント型変数で受ける   vOutFile = Application.GetSaveAsFilename( _           FileFilter:="CSV 形式(*.csv),*.csv", _           InitialFileName:=ActiveSheet.Name)   ' // 変数の値がブール値(False) ならユーザーキャンセルなので終了   If VarType(vOutFile) = vbBoolean Then Exit Sub   ' // 保存実行   ActiveSheet.SaveAs Filename:=vOutFile, FileFormat:=xlCSV End Sub

061156
質問者

お礼

丁寧なご対応ありがとうございました。 勉強してみます。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。 全部わかりませんでは作成依頼と受け取られかねませんよ。 VBA を学びたいのですよね? 頑張ってください。 ご参考までに。 ' // アクティブシートを CSV で保存(標準モジュール) Sub CsvOutputSample()    ' // Excel の CSV 出力機能を利用します      Dim vOutFile As Variant   Dim shSrc  As Worksheet      ' // A) 保存ファイル名を問い合せて、バリアント型変数で受ける   vOutFile = Application.GetSaveAsFilename( _           FileFilter:="CSV 形式(*.csv),*.csv", _           InitialFileName:=ActiveSheet.Name)   ' // 変数の値がブール値(False) ならユーザーキャンセルなので終了   If VarType(vOutFile) = vbBoolean Then Exit Sub   ' // 現在アクティブなシートを覚えておく(後で確実にアクティブ化するため)   Set shSrc = ActiveSheet   ' // 画面の切り替わりをユーザーに見せない   Application.ScreenUpdating = False   ' // B) アクティブシートを「新しいブック」に複製する   shSrc.Copy   ' // B) により、複製先の「新しいブック」がアクティブに切り替わる   With ActiveWorkbook     ' // A) の名前で CSV 形式で保存し、閉じる     .SaveAs Filename:=vOutFile, FileFormat:=xlCSV     .Close SaveChanges:=False   End With   ' // 一応念のため、コピー元シートの親オブジェクト(ブック)からアクティブ化   shSrc.Parent.Activate   ' // シートアクティブ化   shSrc.Activate   ' // オブジェクト変数を空に(参照を破棄)する   Set shSrc = Nothing End Sub

061156
質問者

お礼

ご対応ありがとうございました。 これから、VBAを勉強して内容が理解できるように努力しようと思います。

  • maac777
  • ベストアンサー率50% (43/86)
回答No.2

CSVでの保存自体は「名前をつけて保存」で「ファイルの種類」をCSVにすればOK。 ボタンをクリックでこの動作を可能にするにはマクロを使います。 ツール→マクロ→新しいマクロの記録→上記CSVでの保存手順を実行→ツール→マクロ→記録終了 オートシェイプでボタンを設置→図を右クリックして「マクロの登録」→先ほど記録したマクロを登録→ 図を右クリックして「テキストの追加」で【CSVファイルを出力】と入力 のような感じです。 ただしこのままですとファイル名の変更が出来ず全て上書き保存となってしまいますし任意のシートの選択も出来ません。 ここから先はVBAで作りこむようになりますが初心者とのことですので 全て説明しようとすると本が1冊出来ちゃいそうです。 とりあえずは「名前をつけて保存」で、後はおいおい勉強してみては?

061156
質問者

補足

回答ありがとうございました。 私の質問の仕方が悪く意図したことが伝えられなかったのですが、 任意のシートを指定したディレクトリに保存したいため、VBAでCSVファイル出力をしたいです。 ですが、VBAのスキルがないため、どの場所に、どのようなソースを書けばよいかを詳しく教えて頂きたかったです。 可能でしょうか?

回答No.1

こんばんは。 保存の際にファイルの種類を「csv」に指定すればOKです。 これが一番手っ取り早いですよ。

061156
質問者

補足

回答ありがとうございました。 私の質問の仕方が悪く意図したことが伝えられなかったのですが、 任意のシートを指定したディレクトリに保存したいため、VBAでCSVファイル出力をしたいです。 ですが、VBAのスキルがないため、どの場所に、どのようなソースを書けばよいかを詳しく教えて頂きたかったです。 可能でしょうか?