• ベストアンサー

項目毎に新規CSV形式、ファイル名をつけて保存

お世話になります。 エクレルの項目毎に新規CSVファイルで、ファイル名をつけて保存したいです。 (1)添付図のようなフォーマットを、D列+CSVで保存を行う。 ・山本株式会社.csv ・佐藤有限会社.csv ・株式会社鈴木.csv ・有限会社田中.csv (2)新規ファイル内容 A列:支店番号(元データのE列) B列:支店名(元データのF列) C列:売上(元データのG列) マクロを使って上記作業は可能でしょうか? どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.2

VBAを使えばできないことはほぼないですよ。 ただ・・・Excelってシート内であれば自由にデータを入れることが出来るから、厳格なルールで整っていないシートからCSVのような整えられたデータを別途作成するのって、プログラムが面倒くさくなるんですよね。 それだったら、新しいシートに厳格なルールに従ってデータを転記(もちろん手作業)したものを普通にCSVとしてファイルに保存したほうがいいかもしれません。 個人的には、そういうことをしたければ最初からAccessを使えばいいじゃん!って思ってしまいますけどね(笑) Excelを始めとする表計算ソフトというのは手軽で誰にとってもとっつきやすい優秀なソフトだと思うんですけど、場合によってはそれが最大のネックになってものすごく使いにくいものになってしまいます。 今回のようなケースがその代表例かな? とにかく、私ならお金を貰えばやらないこともない…というレベルのお話になります。 その代わり今回限りの対応で今後も同じことを続けたければシステム化を提案します。

keyboard310
質問者

お礼

丁寧にご回答ありがとうございました。 全くエクセルとマクロについて理解していない私にも分かるようにして頂き、助かりました。 私の希望する作業のもととなるものが決まったルールによって作られているのか。また、そこさえ明確になっていればマクロでも可能ではある。 おっしゃるとおり、現状毎日手作業で転記しておりましたのですが、安易にマクロで解決できるのではないかと考えておりましたので、自身でちゃんと調べてメリットとデメリットを把握するようにしようと思いました。 皆様、ご回答ありがとうございました。

その他の回答 (1)

  • kon555
  • ベストアンサー率52% (1751/3360)
回答No.1

 可能不可能で言えば十分可能です。データ整形の繰り返し作業ですから、ExcelVBAの得意とするところです。  csvでの保存も、当然VBAで可能です。 https://excel-ubara.com/excelvba5/EXCEL120.html  構造としては、不要業を削除し社名毎に分類してcsv書き出し、のような形になると思います。  ただ気になるのは「会社名」でデータを分けるとして「支店名」はどのように区分するのか? など、実務的には細かい要項が多数ありそうという部分ですね。  その辺りが明確であれば問題なくマクロ化できますが、逆にその辺りが曖昧な状態であれば、実務的に使いモノになるマクロは組めないでしょう。

関連するQ&A

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

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

  • CSV形式のファイル名をCSVの先頭に入れる方法

    EXCEL CSV形式のファイル名をCSVファイルの先頭に入れるたいのですが,EXCELのマクロやBVなどで簡単にできるよい方法はないでしょうか。 例えば, ファイル名:  123_001.csv 123_001.csvの内容:  氏名,年齢  山田,25歳    ↓ の123_001.csvを  コード,氏名,年齢  123_001,山田太郎,25歳 というデータにしたいのです。 できれば,フォルダ内に保存されているCSVファイルを一括で処理したいのですが...。 例) 123_001.csvの内容:  氏名,年齢  山田,25歳 123_002.csvの内容:  氏名,年齢  吉田,30歳 123_003.csvの内容:  氏名,年齢  鈴木,50歳    ↓ 123_001.csvの内容:  コード,氏名,年齢  123_001,山田,25歳 123_002.csvの内容:  コード,氏名,年齢  123_002,吉田,30歳 123_003.csvの内容:  コード,氏名,年齢  123_003鈴木,50歳 よろしくお願いします。

  • CSV形式ファイルは編集データは保存されない?

    ダウンロードしたCSVファイルを編集し、初めて保存するときに以下のようなメッセージが出ます、 「(ファイル名)には、CSV(カンマ区切り)と互換性のない機能が含まれている可能性があります。この形式でブックを保存しますか? ・このまま保存するには、[はい]をクリックします。 ・機能を保存するには、[いいえ]をクリックしてから、最新のExcelファイル形式で保存します。 ・失われる可能性がある内容については、[ヘルプ]をクリックしてください。」 「はい」を選択するとCSV形式で保存されるようですが、編集したデータではなく編集前のデータのままで保存されています。 なので「いいえ」を選択すると今度は編集されたデータでExcel形式で保存されます。 つまりCSV形式で編集したものは元データのまま、かつ、同形式でしか保存されないということなのでしょうか?編集したデータを保ちたい場合にはExcel形式でしか保存するしかないのでしょうか?

  • 筆まめ csvファイル形式の保存ができない

    筆まめver.31で、ファイル→他の住所録形式で保存→区切り文字形式ファイルをしても、csvファイル形式での保存ができません。 できるファイルは、Excel住所録筆まめ変換ツールというファイルだけでした。 また、パラメタもいじってみたのですが効果はありませんでした。 csvファイルとして保存をしたいのですがどうすればいいでしょうか。 ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

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

    私の家のofficeは2007を使用しています。 それでデータをCSV形式で保存して『ArcMap9.2』で読み込む予定です。 しかし、CSV形式で保存したファイルをEXCELで開こうとすると 『開こうとしているファイル'○○○○.csv'の形式は、ファイル拡張子が示す形式と異なります。このファイルを開く前に、ファイルが破損していないこと、信頼できる発行元からのファイルであることを確認してください。ファイルを今すぐ開きますか? [はい(Y)][いいえ(N)][ヘルプ(H)]』 という、ウィンドウが出てきます。 とりあえず、それで開いても見れることは見れるのですが、ArcMapで読み込むことができないんです。 どなたか、ご存知の方教えてください。

  • 複数CSVファイルをExcel形式1つにまとめたい

    VBA初心者です。 似たような質問・回答がありますが、どうも私の意図するところと異なるので、 新たに質問させていただきます。 どうぞお願いします。 仕事場で、基本1日1ファイル取得している複数のCSVファイルを、 1週間に一度Excelファイルに一週間分のデータを追加し、 最終的には1か月毎に1つのExceファイル(1シート)に集計してます。 全ファイルとも内容は同じで、1シートで作成されており、 タイトル行は1行目、2行目以降データ(行:データ数はファイル毎に異なる)、 列数はA-IV列といった構成になります。 新しい1つのファイルにまとめる際には、 B列とG列のみ抽出し、一行目にタイトル行、2行目からデータ、 最終行に次のファイルのデータと、いうように複数のファイルのデータをつなげて 1つのファイルにしたいのです。 ちなみに出来上がったExcelファイルとしては、 A列に元CSVファイルのB列データ、C列に元CSVファイルのG列データ、 B列に各データがどのCSVファイルの物か分かるように、 各ファイル名の日付にあたる後ろ部分を表示させたいのです。 ファイル名から日付を拾えない場合は、 ファイルをまとめる前に、列を挿入し、 C列にデータ日付の項目を作り、そこに日付を入力し、 まとめる際に、B・C列+G列を抽出、といった形で、まとめられたらと思ってます。 *各Exceファイルのタイトルの後部分がデータの日付を表す (タイトル例:0803abcde2013_08_03.xls) B列2行目以降に、それぞれ抽出したデータのファイル名から、 日付にあたる部分を書き出し(8月3日と言ったように)表示させたい。 場合によっては、前部分を抽出するパターンもあるので、そちらもお願いします。 *今後、他の何種類かの複数CSVファイルでもファイル毎に (こちらも全ファイルとも内容は同じ)同様に1カ月毎にまとめたいので、 違う条件でも抽出できるように、応用できたらと、考えております。 (抽出する列がB列とI列のみ、A~C列+F列など) VBAで作業したいと考えてます。色々とお手数ですが、よろしくお願いします。 また、他にお勧めのサイトや、参考になる質問がありましたら、 合わせて、教えていただけると幸いです。

  • Excel CSVファイル セル名を名前として保存

    いつもありがとうございます。エクセル2003XPです。 毎回USBメモリーに上書きされてくる、同名のCSVファイルを別エクセルファイルに読み込む作業をしております。 その作業は外部データの読み込みを記憶マクロとして問題ないのですが、エクセルに読み込んだCSVファイルは、かぶらないようにそのつど、Kill を使い削除しております。 ただ完全に削除なので対策として、 読み込んだCSVファイルの1行目のセル名をファイル名として名前を変えて保存、 PCの"C:\Documents and Settings\元データ に毎回CSVもしくは、エクセルファイルに名前を変更して保存する処理をボタンひとつで出来ないか、考えております。 ネットで色々と検索をしておりますが、勉強不足です。 参考でサンプルマクロは見つけましたが、どのように変更すれば良いか分かりません。ご享受いただければ助かります。 CSVファイル名 : log001.csv(毎回、USB) 保存したいファイル名 : CSVファイルを開いた時のA1のセル名(日付です) 保存場所 : PCのマイドキュメントの元データファイル 保存したいファイル形式 : CSVもしくはExcelファイル Sub THSFILE_SAVE() Dim myFname0 As String Dim myFname As String On Error GoTo ERRH '現在のファイル名取得 myFname0 = ThisWorkbook.Name '新しいファイル名をセルA1の値とする myFname = Sheets(1).Range("A1").Value '同じ階層に保存 ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & myFname If myFname0 <> myFname & ".xls" Then '前の名前のファイルを削除する場合は下の一行を有効にしてください 'Kill ThisWorkbook.Path & "\" & myFname0 End If Exit Sub ERRH: End Sub この処理はCSVファイルの読み込み先のエクセルファイルから、行いたいと考えております。 よろしくお願致します。

  • Excel行毎に項目列数の違う表を行列変換したい

    A列に何かしらの名称、B列以降に文字列値があるとします。 鈴木|あああ|いいい|ううう| 佐藤|えええ|   |   | 田中|ううう|かかか|   | ・・・ という表を、 鈴木|あああ 鈴木|いいい 鈴木|ううう 佐藤|えええ 田中|ううう 田中|かかか ・・・ というように変換したいのですが、うまい方法ありませんか?

  • CSVデータの項目名からファイル名を付ける

    CSVデータからHTML拡張子で書きだすCGIを作成してます。 参考になるサブルーチンをネットで見つけたのですが、行の上から順に001.html・・・・のファイル名になり、CSVデータの項目にあるデータでファイル名を付けたいと思いますが、どのように処理したらよいかわかりません。アドバイス願います。 -------------------------------------------------------------- サンプルのCSVデータ(2行目のファイル名をファイル名につけたいです。) タイトル,ファイル名,会社名,担当者,URL 山ちゃん,yamadaya,山田屋,山田,http://www.oooxxx.oo 最上ちゃん,mogami,最上商店,最上,http://www.oooxxx.oo 南ちゃん,minami,南喫茶,南,http://www.oooxxx.oo -------------------------------------------------------------- コード: $list = join('',@csv); @list = split(/\n/, $list); for($count=1;$count<@list;$count++){ $html = $template; $filename = sprintf("%03d.html",$count); @listinfo = split(/\,/,$list[$count]); for($cnt=0;$cnt<@listinfo;$cnt++){ $no = sprintf("<!--%02d-->",$cnt); $html =~ s/$no/$listinfo[${cnt}]/g; } flock(FH, LOCK_EX); open(FH,">$filename"); print FH $html; close(FH); flock(FH, LOCK_NB); }

  • 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」

専門家に質問してみよう