エクセルマクロ:入力したワークシートを新しいブックにコピーして保存する方法

このQ&Aのポイント
  • エクセルマクロを使って入力したワークシートを新しいブックにコピーして保存する方法について紹介します。
  • ただし、コピーしたワークシートには元のエクセルファイルの数式も含まれてしまうことがあります。
  • 値のみを貼り付ける場合は、値を貼り付けながら新しいブックにコピーすることができます。
回答を見る
  • ベストアンサー

エクセルマクロ

入力したワークシートを 新しいブックにコピーして保存するマクロを作成しました。 ただ下記の様に保管すると、 数式もそのまま元のエクセルファイルの数式を参照してしまいます。 下記のマクロをあまり変更しないで、 値貼付け(もしくは値貼付けしながら、新しいブックへコピー) するにはどの様に変更するといいでしょうか? よろしくお願いします。 'Sub newfilesave() Sheets("Sheet1").Copy '名前を付け、ファイル形式も決めてデスクトップに日付を付けて保存する。。 'ActiveWorkbook.SaveAs _ ' Filename:="C:\Users\xxxxx\Desktop\" & Format(Now(), "yyyymmdd_hhmm"), _ ' FileFormat:=xlOpenXMLWorkbook 'End Sub

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2460)
回答No.2

> 教えていただいたように値コピー貼り付け後 > 新しいブックにワークシートコピー > そのあと元ファイルの値のみにしたワークシートを削除 値貼り付けした時点でVlookup関数は値になります、先の回答と同じ結果です。 値貼り付けするけどC列のVlookupだけ関数を残したいという事ですか? Vlookup関数が別シートを参照しているので普通にコピーしてBook名が付加されるのを避けたいとか。 とりあえず、いまいちやりたいことが理解できませんが Vlookupが別シートを参照しているのでしたら、そのシートも新しいブックにコピーして、Vlookup関数も生かします。 Sheet2はVlookupで参照しているシートです。 Vlookup以外の関数は値になります。他の関数も残したいのであれば(質問時の値貼り付けはなんだったのかになりますが)、ここから、ここまで、の間は不要です。 Sub newfilesave() Dim c As Range Sheets("Sheet1").Copy 'ここから ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False ActiveSheet.Range("A1").Select 'ここまで ThisWorkbook.Sheets("Sheet2").Copy _ After:=ActiveWorkbook.Sheets(1) With ThisWorkbook.Sheets("Sheet1") For Each c In .Range(.Cells(1, "C"), .Cells(Rows.Count, "C").End(xlUp)) ActiveWorkbook.Sheets(1).Cells(c.Row, "C").Formula = c.Formula Next End With ActiveWorkbook.Sheets(1).Activate '名前を付け、ファイル形式も決めてデスクトップに日付を付けて保存する。。 'ActiveWorkbook.SaveAs _ ' Filename:="C:\Users\xxxxx\Desktop\" & Format(Now(), "yyyymmdd_hhmm"), _ ' FileFormat:=xlOpenXMLWorkbook End Sub

nenosuke
質問者

お礼

回答いただきありがとうございました。 あまり詳しくなく最初にお答えいただいた プログラムでうまく動きました。 内容をきちんと解釈できなかったためにお手数をおかけしました。 とても参考になりました。ありがとうございました

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1620/2460)
回答No.1

以下のようにしてみてはいかがですか。 Sub newfilesave() Sheets("Sheet1").Copy ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False ActiveSheet.Range("A1").Select '名前を付け、ファイル形式も決めてデスクトップに日付を付けて保存する。。 'ActiveWorkbook.SaveAs _ ' Filename:="C:\Users\xxxxx\Desktop\" & Format(Now(), "yyyymmdd_hhmm"), _ ' FileFormat:=xlOpenXMLWorkbook End Sub

nenosuke
質問者

補足

回答いただきありがとうございます。 質問の時に書く忘れてしまったのですが、 元のファイルで B列に入力されたデータを元にC列がVookupで埋まるようになっており 元ファイルのC列ができればその関数が残ったままになるよう 運用できればと思っています。 この場合ワークシートを元ファイルのブック内にコピー後 教えていただいたように値コピー貼り付け後 新しいブックにワークシートコピー そのあと元ファイルの値のみにしたワークシートを削除 という方法になるでしょうか?

関連するQ&A

  • エクセル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のレイアウトや書式などはそのままに マクロ部分だけを取り除いてコピーするには どのような流れでプログラムすればいいでしょうか? よろしくお願いします。

  • Excelのマクロで結果が一時的にエラーに

    Excelのマクロを使ってデータの算出を行ってから、 そのシートをコピーして別のBookに保存しています。 これまで保存したBookに特に問題が生じたことはなかったのですが、 今朝1枚のシートの数字に「1」だけ誤差がありました。 SUM関数を使った数式が間違ってコピーされたのかと思い確認していたら、 他のシートの数字をチェックしている間にきちんと直っていました。 数字も数式も何も変更しておりません。 どこか間違っていたならそこを直せば良いだけですが、 間違っていた訳ではないため対処方法がわかりません。 このような場合はどうしたら良いのでしょうか? ご存知の方がいらっしゃいましたら、どうかよろしくお願い致します。

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

    ファイルにある複数のシートの中から、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 教えてください。

  • エクセル マクロ

    エクセル マクロで、シート1のA1セルないの文字列(数式)をクリックボードにコピーするマクロを組みたいのですが、セルのコピーは出来るのですが、文字列のみコピーが出来ません。貼り付けは任意でするので必要ないです。 初心者で何もわかりません。よろしくお願いします。

  • EXCEL のマクロを作りたいんですが・・・

    マクロはあまり詳しくありません。マクロの記憶で設定し、多少内容の変更をする程度です。 マスターのBOOKがあり、月ごとにデータを入力し、その都度名前を付けて保存します。 (データの量はまちまちです) Sheet1にデータを入力し、Sheet2には関数が入っております。 使いたいのはSheet2にあるデータなのですが、データが無い欄は関数が入っていますので、そのままではデータとして使うのが面倒です。 CSVで出力するにしても、空の関数の欄が,,,,と出ます。 データが入っているセルだけを範囲指定して、値の貼り付けをし、使用していない空のセルの関数を消すというマクロが出来るでしょうか?

  • エクセル マクロ コピー→シート保護解除→貼付

    いつもお世話になっております。 マクロ勉強中の者です。 2つの別ブックのシート(互いに任意)を同時に開いている前提での作業です。 (1)あるブックのシート(任意)は,シート保護が施されています。このシートのシート保護の解除をします。 (2)(1)で示したブックとは別のブックのシート(任意)に,次のようなマクロを設定してあり,指定した範囲のコピーを行います。 Sub コピー() コピー Macro Range("E6:AI73").Select Selection.copy End Sub (3)次に,(1)で示したブックのシート(任意)に次のようなマクロを設定してあり,先ほどコピーした内容を貼り付けます。 Sub 貼り付け() Range("E6").Select ActiveSheet.Paste  ActiveSheet.Protect End Sub (4)(1)で示したシートには,(2)で行ったコピーの内容を貼り付け,シート保護された状態で作業が終わります。 この一連の作業の中で,(1)の作業を省けないかと考えています。つまり, 別ブックのシートを2枚開いている状態で, ◎あるブックのシートの内容をコピー(範囲指定あり) →◎別のブックのシートに,シート保護解除して(2)でコピーした内容を貼り付け,(セル指定あり)シート保護して終了 (3)で示したマクロに ActiveSheet.Unprotect を付け加えて実行してみたのですが,うまくいきません。エクセルの性格上,「貼り付け」の前にシート保護解除の動作が入ることで,コピーした内容が失われ?て貼り付けることができないのかな?と感じているのですが,どなたかご教授いただけると嬉しいです。 エクセルのバージョンは,2016になります。

  • EXCELマクロ ループする方法について

    EXCELマクロ ループする方法についてです。 お世話になります。 教えてください。 EXCELのマクロについてです。 Sheet1のB4から下方に30程度の名前が並んでいます。 名前は毎回変わり、人数も変わります。 他に「原本」というSheetがあります。 行いたいことは、原本のシートをコピーしてシートの名前を Sheet1のB4から下に順番に変更していきたいのです。 当初、B4からの順番に新しいSheetを作りSheetの名前を変更して 原本からコピー(書式、数式、列幅、値等)しようと試みましたが 数式や値はコピーできましたが列幅などがコピーできません。 そこで原本を「シートのコピー」で新しいコピーした Sheetを作り名前をB4に変更する。 それをB列が空欄になるまでループさせる。という方法を 考えましたが、「空欄になるまで」という 記述がわかりません。 教えていただければ助かります。 よろしくお願いします。

  • 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を削除するとブック全体を保存します。

  • Excelマクロのことで教えて下さい

    初歩的なことですみません。 E列の値をF列に値を入れるために下記のマクロを組みました。 Sub test() Worksheets("Sheet1").Select Dim i As Long For i = 2 To Cells(Rows.Count, 4).End(xlUp).Row Range("F2").Value = "=E2/1024/1024" Cells(i, 6).FillDown Range(Cells(2, 6), Cells(i, 6)).Copy Range("F2").PasteSpecial Paste:=xlValues Next i End Sub ところがF列に「値のみを貼り付け」をした時に、途中から同じ値のみがコピーされてしまい困っています。 (画像参照) うまく貼り付けることができるマクロをお教え下さい。 よろしくお願いいたします。

  • エクセルマクロ コピー元と貼り付け先を指定してコピー&ペーストを実行するマクロ

    単刀直入にやりたいことを述べます。 Cドライブと仮定します。3つのBOOKがあります。 それぞれ ----- BOOK1.xls「○○Sheet」・・・(実行するファイル)   A 1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です) 2 A2:E2・・・(コピーするセル範囲の指定) 3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です) 4 A5・・・(貼り付け先のセルの指定) ----- BOOK2.xls「△△Sheet」・・・(コピー元ファイル)   ABCDE 1 あいうえお 2 かきくけこ 3 ・・・・・ ----- BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)   ABCDE 1 ・・・・・ 2 かきくけこ・・・(貼り付け) 3 ・・・・・ ----- >やりたいこと BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、 その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、 BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、 その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。 別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、 以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。 よろしくお願いします。(ちなみにエクセル2000又は2003です)

専門家に質問してみよう