• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2007VBAシートコピーとマクロ保存)

Excel2007VBAシートコピーとマクロ保存

maverik1226の回答

  • ベストアンサー
回答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

dradra33
質問者

お礼

maverik1226様  ご回答ありがとうございます。 maverik1226様のコードをそのまま使うと 質問に対する答えがそのまま出てきました。 大変助かりました。

関連するQ&A

  • 「VBA} XLSMのファイルをXLSX保存したい

    いろいろとVBAが入っているシート1.xlsmがあります。 シート1の内容をXLSXで保存したいのですが、うまくいきません。 解決に向けてご教授ください。 <ステップ1 XLSMでは保存できます。> Private Sub hachu_Click() '担当者名取得(C4) Dim s As String s = Range("C4").Value Debug.Print (s) ActiveWorkbook.SaveCopyAs Filename:= _ "c:\ " & Format(Date, "mmdd") & "_" & Format(Time, "hhmmss") & s & ".xlsm" '1013_161712木村.XLSM End Sub <ステップ2 XLSXで保存できますが、ファイルを開くときにエラーが出ます。>  FIG.1 Private Sub hachu_Click() '担当者名取得(C4) Dim s As String s = Range("C4").Value Debug.Print (s) ActiveWorkbook.SaveCopyAs Filename:= _ "c:\ " & Format(Date, "mmdd") & "_" & Format(Time, "hhmmss") & s & ".xlsm" '1013_161712木村.XLSM End Sub <ステップ3 マクロのないシート2にあたい張り付けして、シート2だけ保存> 保存の際にFIG.2の様なアラートが出て、手作業が必要です。> 'シートの複製(複製すると新しいブックが立ち上がります) Worksheets(2).Copy '名前を付け、ファイル形式も決めて特定の場所に保存する。 ActiveWorkbook.SaveAs _ Filename:="c:\ " & Format(Date, "mmdd") & "_" & Format(Time, "hhmmss") & s & ".xlsx", _ FileFormat:=xlOpenXMLWorkbook

  • エクセル マクロでシートをデスクトップに保存する

    ファイルにある複数のシートの中から、Bシートだけを抜き出してデスクトップに保存するマクロがわかりません。 他のサイトで以下のVBAがあったので参考にしたのですが Cドライブのマイドキュメントに保存されます。 デスクトップに直接保存したいです。 Sub シートコピーR() ' 1.保存したいシートをシートコピーする。 Sheets("Sheet1").Copy ' 2.アクティブシートのセル全体に対して、コピー&値のみ貼り付けをする。 ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues 'ActiveSheet.Cells.PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False ' 3.アクティブブックを保存する。 ActiveWorkbook.SaveAs FileName:="C:\ファイル名.xls" End Sub 教えてください。

  • VBA SaveAsでワークシートの指定する時

    以下は自動マクロで作成したものをちょっと変えたものです。 Sub Macro1() Sheets(1).Select Sheets(1).Copy ChDir "C:\" ActiveWorkbook.SaveAs Filename:="C:\Book2.xlsx", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False Windows("Book2.xlsx").Activate ActiveWindow.Close End Sub 内容: 一番左のシートのみBook2.xlsxに保存する 疑問点: シートをコピーした後、SaveAsコマンドで保存する際に「コピーしたシートのみ保存する」ような記述が見られないことです。SaveAs自体が、コピーされたシートのみ保存すること前提のメソッドなのでしょうか? ちなみに、Sheets(1).Copyを削除するとブック全体を保存します。

  • Excel2010のマクロについて教えてください。

    今下記のマクロ Sub SHUURYOU() ActiveWorkbook.Save Application.Quit End Sub をabc.xlsmと言うシートに書き込みボタンに貼り付けました。 又他のBookにあるdef.xlsmと言うシートにも貼り付けました。 それぞれ単独で開き書き込みをしてマクロボタンを押せば保存して終了します。 しかしabc.xlsmとdef.xlsmが同時に開いていると一方のマクロを実行すると両方ともクローズしてしまいます。 このマクロを単独のシート(book)だけに有効にするにはどのようにマクロを書けばよいのでしょうか。 教えてください。

  • Excel2007,VBA シートにロードする方法

    VBAのコードがあるファイル(入出力.xlsm)には "シートDATA" "参照データ1" "参照データ2" "参照データ3" "新規データ" ・・・・ というシート名があります。 フォームとボタンを作りました。 「ロード」「セーブ」 「ロード」ボタンをクリックすると ファイル名 "File0001.xlsx"を "シートDATA"というシート名のA5列を軸にしてロードしたいです。 存在しない場合、エラーの場合は"新規データ"というシート名を"ロードDATA"にコピーします。 フォームの「セーブ」というボタンを押すと"File0001.xlsx"というファイル名に "シートDATA"のシートのデータのみ上書きします。 A5列を軸にして保存。 どうしたらいいのでしょうか? A5列を軸にするというのは面倒ならなくてもかまいません。 File0001.xlsxには1シートのデータしかないことになっています。 ファイルに複数シートがある場合はまずいでしょうか? File0001.xlsx File0002.xlsx ・・・ と保存していく予定です。

  • VBAでのシートコピーについて

    VBAでシートを新しいブックにコピーして、名前を付けて保存したいのですが、同じファイル名が存在すると、必ず「上書きしますか?」のダイアログが表示されてしまいます。無条件で上書きする方法ってありませんか? 今は↓のようなコードを書いてます。 Application.ScreenUpdating = False Sheets("sheet1").Copy ActiveWorkbook.SaveAs Filename:= _ "C:\Book1.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False ActiveWindow.Close

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

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

  • エクセルVBAでコピー

    エクセルVBAでのコピーについての質問です。 ブック1 とブック2があります。 ブック1 のSheet1 内にマクロ含むワークシートを 新規ブックにファイル名を指定して 下記のようなプログラムでコピーしようとすると (標準モジュール1の内容) Sub newfilesave() MsgBox "デスクトップの「○○」フォルダに控え○○_日付時間.xlsxファイルを生成します。" Sheets("受付仕分リスト").Copy ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False ActiveSheet.Range("A1").Select 'マクロなしのエクセルデータとして名前を付け、ファイル形式も決めてデスクトップに日付を付けて保存する。。 ActiveWorkbook.SaveAs _ Filename:="C:\Users\user\Desktop\○○\○○_" & Format(Now(), "yyyymmdd_hhmm"), _ FileFormat:=xlOpenXMLWorkbook End Sub Sheet1 内にマクロの内容までコピーされてしまいます。 ブック1のレイアウトや書式などはそのままに マクロ部分だけを取り除いてコピーするには どのような流れでプログラムすればいいでしょうか? よろしくお願いします。

  • エクセル 保存是非のダイアログを出さずに保存VBA

    エクセル 保存是非のダイアログを出さずに保存VBA エクセルファイルの ひとつのブック L.xlsxの特定のセルを 別のブックR.xlsxのセルにコピーするを VBAコードで コピーまでは出来たのですが R.xlsxのブックを保存するかどうかの ダイアログが出てしまいます これが出ないで保存できるように ActiveWorkBook.Save これを入れてもやはり保存是非の確認が 出てしまいます コードは -------------------- Sub ID移動() Dim x As Workbook Dim y As Workbook Workbooks.Open Filename:="C:\Users\USER\Desktop\ACCESS\L.xlsx" Set x = Workbooks("L.xlsx") Workbooks.Open Filename:="C:\Users\USER\Desktop\ACCESS\R.xlsx" Set y = Workbooks("R.xlsx") y.Sheets("sheet1").Range("A2") = x.Sheets("output").Range("B2") x.Close y.Close ActiveWorkBook.Save End Sub ------------------ 保存是非のダイアログがでないで 保存できるための方法を 御教示いただけますか win10 office365 すみませんが 宜しくお願い致します

  • アドバイスをお願いします(VBAで・・・)

    Excel2010を使用。 現在".xlsm"ファイルに シートが複数あります。 この中の一つのシートだけを新たなBookにコピーして、 名前を付けて保存する際、Book名を、"L5"セルにある文字列に したいと思い、ググった結果、下記のコードにたどりつきました。 このコードだけだと"close"の時にダイアログがでてくるので、 これに ActiveWorkbook.SaveAs Filename:="フォルダ名" & Range("L5").Value & ".xlsx" をCloseの前に挿入してみたのですが、Range("L5").Value=Empty値となり エラーがでてしまいます。 VBA初心者であるため、改善策がわからず苦戦しております。 申し訳ありませんが、アドバイスいただけないでしょうか? Sub サンプル() Dim sc As Integer sc = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー Workbooks.Add 'ブック追加 Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け Sheets("Sheet1").Name = "コピー" Application.CutCopyMode = False Application.SheetsInNewWorkbook = sc ActiveWorkbook.Close ThisWorkbook.Activate End Sub 参考URL:http://okwave.jp/qa/q2167570.html ※コピーしたいのは、シートの中のデータ、書式だけなので マクロを必要としません。