• ベストアンサー
  • 困ってます

エクセルで<名前をつけて保存>するマクロに、保存時マクロを含めて保存させることは可能ですか

エクセル、マクロとも初心者です。 (VBAはわかりません) エクセルのテンプレートファイルを開いて、必要箇所だけ入力すると、その日の日付をファイル名として、<名前を付けて保存する>ようなマクロを作りました。 このままだと、マクロも一緒に保存されてしまいますよね。 マクロを含まずに、<名前を付けて保存>させるマクロって可能ですか? できるとしたら、どうやればいいでしょうか。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数1267
  • ありがとう数5

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

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

こんにちは。 今は(Excel 2002以上)は、直接、VBEditor 側にアクセスするコードはセキュリティの関係で嫌われることもあります。Excel 2007 の場合は、拡張子で分別できますから、マクロは切り落とされます。今回は、テンプレートということで、あえて、このようなコードになるのであって、本来は、アドインなどで処理したほうが良いかもしれません。アドインの場合は、ThisWorkbook をActiveWorkbook にすればよいはずです。 シートモジュールにマクロがある場合は、       sh.Copy After:=wb.Sheets(wb.Worksheets.Count) と、その下の行のコメントブロックとを切り替えてください。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)   Dim shCnt As Integer   Dim wb As Workbook   Dim i As Integer   Dim sh As Worksheet   Dim nSh As Worksheet   Dim fName As String      If Not ThisWorkbook.Name Like "*.x?t" Then     Cancel = True     fName = ThisWorkbook.Name     fName = Left$(fName, Len(fName) - 1)     shCnt = Application.SheetsInNewWorkbook     Application.SheetsInNewWorkbook = 1     Set wb = Workbooks.Add     wb.Worksheets(1).Name = "temp"     Application.ScreenUpdating = False     For Each sh In ThisWorkbook.Sheets       sh.Copy After:=wb.Sheets(wb.Worksheets.Count)       ''シートモジュールマクロがある場合(上のコード切り替えすること)       'Set nSh = wb.Sheets.Add(After:=wb.Sheets(wb.Worksheets.Count))       'nSh.Name = sh.Name       'sh.Cells.Copy nSh.Cells(1, 1)     Next sh     wb.Sheets(1).Activate     Application.ScreenUpdating = True     Application.DisplayAlerts = False     wb.Worksheets(1).Delete     Application.DisplayAlerts = True     Application.SheetsInNewWorkbook = shCnt     ChDir Application.DefaultFilePath     i = 1     '同名ファイルを探す     Do Until Dir(fName & i & ".xls") = ""      i = i + 1     Loop     fName = fName & i & ".xls"          Application.Dialogs(xlDialogSaveAs).Show fName, 1     ThisWorkbook.Close False     Set wb = Nothing   End If End Sub #3さんのご指摘のマクロですが、マイクロソフトの定義(プログラマーズガイド)からすると、今回のイベント型は、マクロと呼ばないそうです。マクロは、引数を持たないパブリックなSub プロシージャのことだけを指しますので、除外されます。しかし、多くの方は、あまり、これについては、明言は避けているようです。理由は、マクロそのものの意味が、ミクロの反対で、全体のひとつのタスクを指すから、厳密な意味を持たせると、言葉としての原義と離れてしまうように思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

Wendy02さま ご回答ありがとうございました。 勉強不足で、みなさんの指導内容についていけない面もありますが、 教えていただいたことをこれからゆっくり試してみます。

関連するQ&A

  • エクセル2007 名前を付けて 保存 VBA(マクロ)

    エクセル2007 名前を付けて 保存 VBA(マクロ) 今回もよろしくお願いします。 今回は作業終了時にファイルに名前を付けて自動保存させたいのですがうまくいきませんのでアドバイスお願いします。 ファイル名はセルの数か所にある文字、日付などを足してファイル名にしようとしています。 例えば A1 報告書 A2 2010/03/22 A3 パソコン と入っているとします。 ファイル名は ”報告書20100322パソコン”としたいのですが、日付の処理がわかりません・・・。 普通に表示させると”報告書40259パソコン”となってしまいます。 ネットでは20100322から2010/03/22の日付形式への変換の方法は多数見受けられるのですが、逆は未だ見つけられないため、投稿しました。 同じファイル名がある時は、ファイル名+(1)のようにファイル名がダブらないようにもしたいのです。 いつも、全て手打ちでやっておりエクセルファイル保存後、PDFファイルでも同じ名前で保存しているため、可能であればPDFでも保存出来ればうれしいです。 PDFはADOBE STANDARD8といきなりPDFを使用しています。 ご教授よろしくお願いします。

  • 日付を入力したセルをファイル名にして保存するには

    こんにちは。VBA 初心者です。 あるセルに日付を入力しています。 そのセルは書式設定の表示形式・日付で「2001/3/14」と入力した時に、「2001年3月14日」と表示される様に設定しています。 そしてこのファイルをマクロで名前をつけて保存するとき、上記のセル(の値)をファイル名したいのですが、2001\3\14と認識され、エラーが出ます。 セルに日付を入力する時に、出来るだけかな入力はせず、日付をファイル名にして保存するにはどういう方法があるでしょうか。 わかりにくい説明で申し訳ありません。ウィンドウズXP・エクセル2003です。よろしくお願いします。

  • エクセルマクロ 異なるファイル名でも実行してくれるマクロ

    マクロ初心者です。よろしくお願いします。 ファイル名はすべて例えです。 「A」エクセルファイルを 「Z」というファイルに貼り付けるマクロを作りました。 そのマクロで「B」ファイルからも「C」ファイルからも 「Z」ファイルにコピーをしなくてはいけないのですが VBAには「A」で記録されているため 「B」と「C」にはそのマクロが使えません・・・。 VBAをどのようにデバックすればいいのでしょうか?

その他の回答 (3)

  • 回答No.3
  • zap35
  • ベストアンサー率44% (1383/3079)

こんなマクロでもできそうです Sub Macro1() Dim ws As Worksheet  Set ws = ActiveSheet '元々開いていたシートを退避  Worksheets.Copy '全てのワークシートを新しいブックにコピー  ActiveWorkbook.SaveAs "C:\Temp\" & Format(Date, "YYYYMMDD") & ".xls" '新しいブックを日付をファイル名にして新規保存  ActiveWorkbook.Close '新しいブックを閉じる  ws.Activate '元々開いていたシートを表示 End Sub なおマクロとはVBAで記述した「処理の固まり」ですからマクロ≒VBAですよ

共感・感謝の気持ちを伝えよう!

質問者からのお礼

zap35さま ご回答ありがとうございました。 教えてくださったマクロ、試してみます。 お礼を一度投稿したはずなんですが、 反映されていないので、もう一度・・・ 不慣れなので、重複していたらごめんなさい。

  • 回答No.2
  • kmmk16
  • ベストアンサー率46% (32/69)

ThisWorkBookに下のコード貼り付けてください。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim myMacro As Object For Each myMacro In ThisWorkbook.VBProject.VBComponents With myMacro If .Type = 100 Then .CodeModule.DeleteLines 1, .CodeModule.CountOfLines Else Application.VBE.activeVBProject.VBComponents.Remove myMacro End If End With Next myMacro End Sub 使用するときは、(マクロ・セキュリティ)の(Visual Basic Projectへのアクセスを信頼する)にチェックを入れてください

共感・感謝の気持ちを伝えよう!

質問者からのお礼

kmmk16さま 早々にご回答をありがとうございました。 4名の方全員にどうしてポイントをつけられないのでしょうか。 ポイントなしになってしまって申し訳ありません。 教えてくださったこと、試してみます。 感謝! ご回答ありがとうございました。 試してみます。

  • 回答No.1

ワークシートを新しいブックにコピーして保存します。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

hana-hana3さま 早々にご回答をありがとうございました。 ポイントなしになってしまって申し訳ありません。 感謝しております!

質問者からの補足

回答ありがとうございます。 いまさらですが、 質問タイトルを間違えてしまいました(ドジ・・) 保存するときに、マクロを含めずに保存させる、というマクロは作成できますか? というのが質問の趣旨です。混乱させてゴメンナサイ。 なぜこんなマクロが必要かと言うと、 超初心者がファイルを扱うので、上書きされないよう、自動で新規保存させたいためなんです。 その時にマクロをのぞいて自動保存できたらいいな、と思ったものですから・・・

関連するQ&A

  • VBAでマクロを使って、マクロ無効のエクセルシートとして名前を付けて保

    VBAでマクロを使って、マクロ無効のエクセルシートとして名前を付けて保存ってできますか?? FileFilter:="エクセルファイル(*.xlsx),*.xlsx" として保存すると、保存はできるのですが、開くことができません。 VBA初心者です。よろしくお願いします。

  • エクセルのマクロ「名前を付けて保存」について

    エクセルのマクロ「名前を付けて保存について」質問です。 エクセルのファイルを指定フォルダに名前を付けて保存するVBAは作れたのですが、 たとえば、毎回 ボタンを押すとシート内("A4")と決まった言葉で保存したいです。 やり方を教えてください! ※すみません。今日の打ち合わせで使用したいので急ぎめでお願いします。

  • EXCEL VBAで名前をつけて保存

    EXCEL2003でVBAを作成しています。 INPUTBOXに入力した名前でファイルを保存するVBAを 作成したのですが、 同じファイル名が既に存在していたときに、 エラーのメッセージを出すようなVBAはありますか?

  • エクセルで「名前を付けて保存する」マクロ

    エクセルのマクロに関して教えて下さい。 作成したエクセルの原稿を指定したフォルダに 「名前を付けて保存する」マクロを作成できればと思っています。 同じ名前で上書きなら問題ないのですが その都度違った名前で保存したい時に困っています。 名前の時だけ手動で入力するか 原稿の中に書いてある名前をコピーする方法でも良いです。 よろしくお願いします。

  • エクセルマクロの作成

    VBA初心者です。例えばSheet1のセルA1に日付が入っているとしてマクロでその日付をm.yyの形で名前を付け、なおかつ元のファイルがあった場所もしくは特定の場所に保存するにはどのように記述すればよいですか?

  • エクセルのマクロについて

    エクセルで表(ファイル名:在庫)にデータを入力し印刷・保存(名前を付けて保存でファイル名を「入力日+ファイル名」で保存)という作業をほぼ毎日行っているのですが、いちいち印刷ボタンを押し、名前を付けて保存でファイル名の前に入力日を付け加えて保存するという作業は手間がかかります。そこで、マクロを使ってワンクリックにて印刷・保存を実行できないかと考えています。ただ、何分初心者ゆえよく分かりません。御教授願えればありがたいです。

  • エクセルでマクロを使って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 長くなりましたが、どうぞ宜しくお願い致します。

  • Excel マクロで名前を付けて保存

    Excel で NOW() 関数で表示させてあるセル(D1)があります。 このブックは、閉じる前に「名前を付けて保存」します。 そのときファイル名の後に D1 という文字を加える操作を、キー入力なしにマクロで行いたいのですが、どうしたらよいでしょうか。 教えて下さい。よろしくお願いします。

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

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

  • エクセルのマクロについて

    人が作ったマクロで困ってます。 数年分の書類を一つのファイルでシートに分けて作ってます。 マクロでファイル名を付けて保存するまではいいのですが、 ファイル名で使いたい日付がテキストボックスで作られているため、 うまくいきません。 テキストボックス内の文字列をコピーしてファイル名に使えないでしょうか? エクセルは2007です。(2003もあります)