![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.4ベストアンサー
- 回答日時:
こんにちは。
今は(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さま
ご回答ありがとうございました。
勉強不足で、みなさんの指導内容についていけない面もありますが、
教えていただいたことをこれからゆっくり試してみます。
No.3
- 回答日時:
こんなマクロでもできそうです
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
- 回答日時:
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) vba マクロでファイル名をつけて保存するやり方を教えてください。 マクロで作成したエクセルファイル 2 2023/01/31 18:22
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/03/31 12:46
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/05/23 15:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでファイルを表示した...
-
秀丸で保存時のフォルダを固定...
-
Excelマクロ ファイル名が変わ...
-
エクセルマクロを有効にしない...
-
ダブルクリックでエクセルのセ...
-
Excelが急に遅くなりました。解...
-
マクロが入っているファイルを...
-
Excel のマクロを常に有効にで...
-
エクセル2013vbaで、見えない名...
-
【マクロ】その時、その時で変...
-
パソコンについて2点教えてくだ...
-
昨日まで動いていたエクセルの...
-
エクセル2000と2002ではうまく...
-
エクセルマクロ実行中に別ファ...
-
excelファイルに使われているVB...
-
エクセル マクロが無効になる
-
Excelの マクロってファイルの...
-
エクセルファイルを自身のファ...
-
アクセスからエクセルファイル...
-
Adobe Reader を閉じる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル終了時の保存確認メッ...
-
VBAを一度起動するとずっと出て...
-
【マクロ】その時、その時で変...
-
VBA マクロ実行時エラー’1004Ra...
-
昨日まで動いていたエクセルの...
-
マクロの有効化するダイヤログ...
-
別のパソコンでエクセルのマク...
-
コピーしたファイルのマクロを...
-
EXCEL マクロ クリップボードク...
-
excelファイルに使われているVB...
-
エクセルファイルを自身のファ...
-
Excelマクロ ファイル名が変わ...
-
Microsoft Excelのファイルのエ...
-
Excelが勝手にシート移動してし...
-
excelが別プロセスで起動してし...
-
エクセルマクロ実行中に別ファ...
-
エクセル2013vbaで、見えない名...
-
マクロでマクロを削除する
-
アクセスでファイルを開いたと...
-
Excel2010 PERSONAL.xlsbの挙動...
おすすめ情報