• ベストアンサー

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

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

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 うまくいかないコードを見せていただいたほうが、回答はつけやすいのですね。 >(例)Book1 で作ったマクロはBook2のファイルで同じマクロを実行するとBook1に保存しよう(上書き)とします。 >(例)Book1で作業してる時は保存名をBook1に、Book2で作業しているときは保存名をBook2にしたい。 ActiveWorkbook という名称は使っているのでしょうか? コードとしては、以下は、本来、型式が、xlNormal にするなら、拡張子はいりませんが、SaveName のところをチェックしてみてください。xls になっているはずです。 Sub Test1() Dim fn As String Dim SaveName As String  '開いているブックの名前を取る  fn = ActiveWorkbook.Name  '拡張子を取る。  SaveName = Mid(fn, 1, InStrRev(fn, ".") - 1) & ".xls"  'ファイルの存在チェック  If Dir(SaveName) = "" Then   '保存   ActiveWorkbook.SaveAs Filename:=SaveName, FileFormat:=xlNormal  Else   'すでにある場合は、メッセージを出す    MsgBox SaveName & " のファイルはすでに存在しています。", 48  End If End Sub

関連するQ&A