最大1万円超分の電子書籍プレゼント♪

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

gooドクター

A 回答 (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」で出力されます。
ボタン押すと出力されるようにもできますが記載が複雑に
なりそうなのでこれで^^;
以上です。
    • good
    • 1

#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
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/03/04 18:03

こんにちは。



全部わかりませんでは作成依頼と受け取られかねませんよ。
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
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/03/04 17:17

CSVでの保存自体は「名前をつけて保存」で「ファイルの種類」をCSVにすればOK。


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

この回答への補足

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

補足日時:2008/03/04 01:02
    • good
    • 0

こんばんは。


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

この回答への補足

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

補足日時:2008/03/04 01:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

gooドクター

人気Q&Aランキング