エクセルでマクロを使ってCSV保存時のファイル名

このQ&Aのポイント
  • エクセルでマクロを使ってCSV形式でデータを保存する方法について教えてください。
  • 保存するファイル名を各人のエクセルファイル名にし、場所を同僚のデスクトップに指定したいです。
  • マクロの修正方法についても教えてください。
回答を見る
  • ベストアンサー

エクセルでマクロを使ってCSV保存時のファイル名

初めてエクセルでマクロ(マクロの記録と言うのを使って)をトライしている初心者です。自分なりに色々調べて見ましたが、イマイチ分からないので以下2つ教えて頂けないでしょうか? 他のアプリに取込む為、通常使っているエクセルのデータをCSV形式で保存するまでをマクロで作成しマクロボタンまでを作ることは出来ました。それを使いたいと言う同僚が何人かいて、その人にエクセルを渡す場合についてです。 (1)CSV保存するファイル名を、各人好みの元々のエクセルのファイル名にしたい。 (2)保存する場所を、同僚各自のデスクトップにしたい。または各自に指定して保存させたい。 のですが、私が記録したマクロの保存該当部分は以下と思いますが、自分用なので、自分のPCの名前(以下、XXXX部分)になっていて、かつ自分が指定した毎回同じファイル名(以下、AAAA部分)になっているのが問題で、同僚のPCではマクロが実行できませんでした。 この、XXXXとAAAAやその前後の言葉をマクロの修正(VBAで)で書き換えればいいのでしょうか?その場合どのようにすればいいか教えてください。 ChDir "C:\Users\XXXX\Desktop" ActiveWorkbook.SaveAs Filename:= _ "C:\Users\XXXX\Desktop\AAAA.csv", FileFormat:=xlCSV, _ CreateBackup:=False End Sub 長くなりましたが、どうぞ宜しくお願い致します。

noname#259941
noname#259941

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

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.3

回答No.2です。 今、 Sub Sample() Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" ActiveWorkbook.SaveAs Filename:=dt & ThisWorkbook.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False End Sub で、もう一度、試しましたが(「Sub Sample()」と「End Sub」を追加しただけで、それ以外は、全くいらっていません)、エラーなど出ませんでした。 ただ、私、勘違いをしていました。 「ThisWorkbook.Name」ですと、「.xlsm」が付いてしまいました(「~.xlsm.csv」となってしまいました)。 そこで、以下のようにしていただければ、「~.csv」となります。 Sub Sample() Set so = CreateObject("Scripting.FileSystemObject") Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" fn = so.GetBaseName(ThisWorkbook.Name) ActiveWorkbook.SaveAs Filename:=dt & fn & ".csv", _ FileFormat:=xlCSV, CreateBackup:=False End Sub 申し訳、ございませんでした。

noname#259941
質問者

お礼

Prome_Lin様、 申し訳ございません。なんてそんな・・・こんなに丁寧にアドバイスして頂き、こちらこそ本当にすみません&ありがとうございました。 教えて頂いたものをそのままコピペして、実行しましたら、私の理想通りのものが出来ました。本当に本当にどうもありがとうございます。

その他の回答 (2)

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

それぞれのパソコンの「デスクトップ」は Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" で、「dt」に入ります。 したがって、「ChDir "C:\Users\XXXX\Desktop"」は不要で、 Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" ActiveWorkbook.SaveAs Filename:=dt & "AAAA.csv", FileFormat:=xlCSV, CreateBackup:=False で、デスクトップに、「AAAA.csv」という名前で保存されます。 次に、マクロが走っている、エクセルのファイル名は、 「ThisWorkbook.Name」または、「ActiveWorkbook.Name」で取得できます。 このとき、拡張子がつきませんので(たとえば、「abc.xlsx」なら「abc」)、そのまま Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" ActiveWorkbook.SaveAs Filename:=dt & ThisWorkbook.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False で、エクセルと同じファイル名の「csv」ファイルとして保存されます。

noname#259941
質問者

補足

教えて頂いたものをそのままコピペして、試して見たのですが、「構文エラー」となり、以下の部分が赤文字になってしまいました。昨日買ってきた本を見てもさっぱり解決できず、大変恐縮なのですが、再度教えて頂けないでしょうか?どうぞ宜しくお願い致します。 ActiveWorkbook.SaveAs Filename:=dt & ThisWorkbook.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

最後の方のマクロは編集モードで開けたんですね?(vba) その通りです。 xxx aaa を単に書き換えてvbaを閉じれば保存されます。

noname#259941
質問者

補足

早々にどうもありがとうございました。 そして、私の質問の仕方がちょっと言葉足らずです、すみません。 人にそのマクロファイルを渡しても、いちいち私や受取った人がXXXやAAAを書き換えないでも済む用にしたいのです。私が最初にマクロの編集モードでXXXやAAA含むその他の部分もVBAを書き換えてしまえば、使う人やPCが変わってもマクロを編集しなくても済むかなと考えております。 重ねての質問ですみません。どうぞ宜しくお願い致します。

関連するQ&A

  • エクセルでファイルをcsv形式で保存するマクロについて

    同様の質問が以前にあったのですが、 どうやら私のは少し違うようなので新規質問として投稿させていただきます。 エクセルファイルを保存する際、保存形式を「テキスト(タブ区切り)(*.txt)」にして、 ファイル名の拡張子の部分だけ(.csv)にして保存するマクロを作成したいです。 しかし、エクセルに付いているオートマクロ機能で記録しようとすると、 ・ファイル名がオートマクロを作成した際に付けたファイル名になってしまう。 ・保存場所がオートマクロを作成した際に保存したフォルダになってしまう。 という問題が発生します。 なので、 ・保存する際のファイル名は現在作業しているファイルの名前をそのまま使用する。 ・保存する際のファイル名の拡張子部分は(.csv)に変更する ・保存場所は現在作業しているファイルがあるフォルダにする(もしくはプログラムで予めパスを指定できる)。 ・保存形式は「テキスト(タブ区切り)(.txt)」 の4つの条件を満たすマクロの作成方法をお教えいただけますでしょうか? すみませんが、よろしくおねがいします

  • エクセルマクロでファイルを開いて保存したいです。

    エクセルマクロでファイルを開いて保存したいです。 エクセルファイルでファイル名「編集」という物を開きます。 このSheet1には中央にコマンドボタンが作成して有ります。 このボタンをクリックして以下の作業をマクロで行いたいです。 1.エクセル標準の「ファイルを開く」のメッセージボックスが開く 2.ここは使用者が作業をしてもらう   マイドキュメントだったり、マイネットワークだったり、   (ファイルの種類はCSVにする)   処理をしたいCSVファイルを探してもらい選択後、開くをクリック   例えば20100922.CSVを選択し開くをクリック 3.クリックと同時にそのファイルが展開されて、「編集」のエクセルファイルの   Sheetにシート名「集計」が作成されそのシートにCSVファイルの全内容がセルA1から貼り付く。   さらに登録してあるマクロモジュールで編集処理がされ   マクロを引き継がず、シート「集計」だけを   ファイル名は固定でそのファイル名の後ろに作成日(システム日付)を入れて   参照したCSVファイルの保管場所に保存する。   ファイル名例:売上20100923.xls(売上は固定) 4.エクセル「編集」のファイルからシート「集計」を削除する。 5.メッセージBOXで「編集終了」と表示 次回エクセルファイル「編集」を開くと、コマンドボタンだけである。 また作成された「売上20100923」はマクロがないから開くときに マクロのメッセージは出ない。というようにしたいです。 NO.2のファイルを選択する作業は作業者にしてもらいますが シート1のコマンドボタン1回を押すだけでNO.1~NO.5まで完結させたいです。  NO.3のマクロ処理はマクロの記録でモジュールができています。 このマクロの作成方法と、そのマクロが出来たら その文のどこに作成済みの処理文を入れればいいのかわかりません。 よろしくお願いします。 ここでつまづいています。この後この選択したファイルの全内容が シートの集計に展開されません。 Private Sub CommandButton1_Click() Call 集計 End Sub Sub 集計() FullPath = Application.GetOpenFilename("CSV,*.CSV") If FullPath <> "False" Then Sheets("Sheet1").Select Sheets.Add ActiveSheet.Name = "集計" With ActiveSheet.QueryTables.Add(Connection:="CSV;" & FullPath, Destination:=Range("A1"))   マクロの記録で作成したマクロ   シート"集計"をマクロを引きつかずファイル名売上&システム日付で保存   シート"集計"を削除する

  • Excelファイルを一発でcsvファイルにしたい

    こんにちは。 Excelファイルを一発で(一発でなくても、すくない手順で) csvファイルにしたいのですが、なにか方法はありますでしょうか? マクロの記録で挑んだのですが、ファイル名が常に同じファイル名に なってしまい、実用になりませんでした。 ファイルが100個近くあるので、いちいち手でやっているのは 大変なので、教えていただけるとありがたいです。 よろしくお願いいたします。

  • csv形式のテキストファイルをexcelでCSV化するマクロについて

    今、ひとつのフォルダに大量にCSV形式で保存されているテキストファイルを excelのマクロを使って、ひとつのexcelにCSV形式(.xls)で保存するものを作成している のですが、今までマクロを使ったことがないため、まったく歯が立ちません。 もう少し詳しく書くと、テキストファイルの中身は、 01,54521,18:01:02,110230 というようになってます。 これを、excelのマクロを使い、カンマ区切りで取り込むような感じです。 すみませんが、回答お願いいたします。

  • エクセルマクロ

    やりたいことは、毎回更新されて開くエクセルCSVの画面で、自分仕様にマクロの記録を行い、(枠固定や、セルの幅変更、色を付けておいたり)、そして再度 更新されたエクセルCSV画面がを開かれたときに、前回記録したマクロ設定された状態で開きたい。 現在は、CSVファイルが開かれると、自分の見やすいように操作して見ているのですが、これをいったん閉じて(毎回更新される内容なので保存しないで閉じています) またCSVファイルを開くとき繰り返し自分の見やすいように操作してから見ていますが、この見やすいようにする操作を毎回行わず設定するやり方を教えてください。 パソコンは詳しくないです、プログラムみたいな画面はさっぱりわかりません。 ちなみに、毎回更新されて開くCSVエクセルファイルは、フィルター選択で自分の見たい部分を選択して見ています。 職場で使用しているのでなるべくはやく解決したいです。

  • 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ファイルの読み込み先のエクセルファイルから、行いたいと考えております。 よろしくお願致します。

  • エクセルのマクロ 保存フォルダ選択

    エクセルのマクロで以下の事を行いたいのですが、上手く行かずに悩んでおります。 どなたかご教示ください>< 前提:範囲指定した部分をcsvで出力 1.csvの保存フォルダを指定したい (\\192.168~などのネットワークドライブ) 2.形式はデフォルトでcsvを選択した状態にしたい 3.ファイル名を「年月日売上表」にしたいので、デフォルトでファイル名部分に「売上表」と入れたい 年月日は都度手動で変更して保存したいので、上記のフォルダ選択→名前を付けるところまでとマクロで行いたい。 どなたかお知恵をお貸し下さい。

  • エクセルのマクロの記録でcsvファイルを開いたら日付が変わった

    エクセル2000のマクロの記録で「xxx.CSVファイルを開く」を作ってオート実行したところ、ある日付の列、2008/7/15 などがすべて2001/7/15、2025/7/1などとんでもない日付に変わってしまいます、手動で開くと正常です。一度手動で開いてファイルをxxx.xlsで保存してマクロを記録し、オートで実行すると正常です。セルの書式を見ると日付になっています、どこに問題があるのでしょうか。よろしくお願いします。

  • 『保存』のマクロを違う名前のファイルでも実行したい

    マクロ初心者です。 CSVファイルの数字の羅列をエクセル上に並べグラフにするマクロを作りました。 今度はそれをエクセルファイルとして保存したい。 見よう見まねで保存のマクロを作ってみましたが、 その際、このマクロを他のCSVファイルで実行しようとすると マクロを作ったファイル名に保存しようとします。 (例)Book1 で作ったマクロはBook2のファイルで同じマクロを実行するとBook1に保存しよう(上書き)とします。 これをその時開いて作業しているファイル名で自動的に保存させるには どうしたらいいのでしょうか? (例)Book1で作業してる時は保存名をBook1に、 Book2で作業しているときは保存名をBook2にしたい。 説明が下手で申し訳ありませんが、この様な事がマクロでできるのでしょうか?また、できるとすればどこをどのようにすればいいのでしょうか? 教えてください。よろしくお願いします。

  • エクセルのマクロでファイル名のつけ方

    あるセルの文字列を、マクロで ファイル名にして保存するにはどうしたらよいでしょうか。マクロの知識は記録修正ぐらいしかありませんが、 ご教授お願いします。 実験データが数百ありまして、 それを分割保存したいのです。 分割保存で最後 Sendkeys "%FA"とするところまでは 分かったのですが、できればファイル名もマクロで保存できたらすばらしいのですが。。。

専門家に質問してみよう