●質問の主旨
複数のシートのファイルにおいて最終シートだけをコピーし、
かつそのファイルの標準モジュールも含んだファイルを保存するには、
下記のコードをどのように書き換えたらいいでしょうか?
ご存知のかたご教示願います。
●コード
Sub 保存()
Dim flname As String
flname = "D:\医療週報\VBA試作\" & Format(Date, "yyyy年mm月") & ".xlsx"
ActiveSheet.Copy
ActiveWorkbook.SaveAs flname
ActiveWorkbook.Close
End Sub
●質問の補足
1)マクロで「保存」を実行するときは手作業で必ず最終ページを開いています(アクティブにします)。
2)上記コードのうち".xlsx"では最終シートだけをコピーできますが、
マクロの保存ができません。また".xlsm"にするとエラーが出ます。
".xls"にすると複数のシートが全てコピーされた上に、マクロの保存ができていません。
3)私はVBA初心者です。
No.4
- 回答日時:
>標準モジュールも含んだファイルを保存するには
があるため(マクロをコピーしてくるようなことはVBAの初級中級のものが、やる課題で無いと思うので)
#1のお答えに賛成。
(1)ブックをコピー
(2)コピーで出来たブックの名前を望みのものに設定
(3)最終のシートを1つ残して削除
(4)残った1シートのセル内容を消す(必要なら)
ーー
引っかかったのは
>最終シート
ですシートタブが一番右のシートで良いのか(下記例はこの方)、シート名の名前の上で、日付(の一部)などがシート名の一部についていて、その日付の最終のものなどとなると、コードも増える(変に年を略した月日などにしていると来年分と前後が区別できない)。
心配要らないのかな?
>マクロの保存ができません
この意味は?。マクロのコードモジュールの別ブックへのコピー法がわからないということか。それを聞いているような質問が昨日今日あったが。
ーー
やっていることは
サブコードccをつけてコピー保存
ソンブックを開いて最後のシート以外は削除
最後のシートとモジュールは残っていることを確認
した。
これで不都合な点はあるだろうか。相当ケースでテストをしてチェックしてください。
Sub test01()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Filename = ThisWorkbook.Name
MsgBox Filename
flnm = Split(Filename, ".")(0)
MsgBox flnm & "cc" & ".xls"
ActiveWorkbook.SaveCopyAs Filename:=flnm & "cc" & ".xls"
Workbooks.Open flnm & "cc" & ".xls"
For Each sh In Worksheets
MsgBox sh.Name
If sh.Index <> Sheets.Count Then
MsgBox sh.Name
sh.Delete
End If
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
imogasi様
いつもご回答ありがとうございます。
NO.1のご回答と同じくimogasi様の発想方法を
使ってコードを書き直すと私が思っていたことが
できるようになりました。
No.2ベストアンサー
- 回答日時:
dradra33 様
こんなのでどうでしょう?
特に質問に記載がなかったので「『マクロを実行するブック』の最終ページ(一番右端と解釈しました)を標準モジュール付きで別名保存する」こととして回答します。
それと、結局ファイルの拡張子を何にするのか良く分からなかったのでxlsxにするようにしています。
Sub Tset()
Dim s As Worksheet, flname As String
'保存ファイル名を取得
flname = "D:\医療週報\VBA試作\" & Format(Date, "yyyy年mm月")
'シート削除時のメッセージを非表示
Application.DisplayAlerts = False
'全シートをループ
For Each s In ThisWorkbook.Worksheets
'一番右のシート番号でなければ削除
If s.Index <> ThisWorkbook.Worksheets.Count Then
s.Delete
End If
Next
Application.DisplayAlerts = True
'保存
ActiveWorkbook.SaveAs Filename:=flname, FileFormat:=xlNormal
'xlsmが良ければ、FileFormat:=xlOpenXMLWorkbookMacroEnabled とする
End Sub
maverik1226様
ご回答ありがとうございます。
maverik1226様のコードをそのまま使うと
質問に対する答えがそのまま出てきました。
大変助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excel マクロについての相談
-
別のシートを参照して計算する方法
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
VBA 最終行まで数式をコピーする
-
【ExcelVBA】全シートのセルの...
-
特定の文字を含むシートだけマ...
-
エクセルのマクロについて教え...
-
VBA 入力月で該当シートを選択...
-
一括印刷マクロ シート名を数字...
-
【ExcelVBA】動的にボタン、ボ...
-
VBA 存在しないシートを選...
-
同じ作業を複数のシートに実行...
-
ListViewの画面の更新
-
実行時エラー1004「Select メソ...
-
シートが保護されている状態で...
-
エクセルで通し番号を入れてチ...
-
【VBA】指定した検索条件に一致...
-
ユーザーフォームに入力したデ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報