エクセルでシートを新規Bookにコピーして保存

このQ&Aのポイント
  • エクセルでシートを新規Bookにコピーして数値で貼り付け、指定のセル内容をファイル名にして保存する方法について教えてください。
  • 問題は、新規BookでVBAを動かす場合、複数のPCで使う時にどこに記録すれば良いかわからないことと、新規Bookを表示させてから操作するか、元のシートから直接操作するか迷っていることです。
  • また、保存するファイル形式はVBAが含まれないxlsx形式が望ましいとのことです。
回答を見る
  • ベストアンサー

エクセルでシートを新規Bookにコピーして保存

いつもお世話になっております。 毎回お世話になっております。 過去にも似たような質問をさせていただいてその時々の要求は解決しているのですが、悲しいかな各々のVBAが組み合わせられません。(というレベルです) やりたいことは、特定のBookのアクティブシートを別の新規BookのSheet1にコピーして数値で貼り付ける。➣ここまではできました。 問題はこの、新規Bookを指定のセル(D5とA1)の内容をファイル名にして指定のフォルダに保存する。が出来ません。 1.新規BookでVBAを動かしたいのですが、複数のPCで使う時にどこに記録するのかわかりません。 2.コピーして数値で貼り付けから保存までのVBAは元のシートから直接(1回の操作)でも、新規Book1を表示させてからの操作でもどちらでも良いです。 3.Book1を保存するファイル形式はVBAが含まれないxlsxが好ましいです。(メールで送信するので)

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.4

> 1回目のVBAではBook1で2回目はBook2で勝手に開いてくるBookのことです。 > 新規BookのSheet1にコピーして数値で貼り付ける このときブックやシートの指定をしていると思いますが、その指定のまま適用したらいいのではないですか。 こちらでは既存のコードがどのようなものかもわからないのに、後からあれこれ言われても判断できませんからご自身で適宜調整してください。

akira0723
質問者

補足

質問が分かりにくくでお手数をおかけしました。 何がしたいのかわかりにくい内容だと思いました。 >やりたいことは、特定のBookのアクティブシートを別の新規BookのSheet1にコピーして数値で貼り付ける。➣ここまではできました。 問題はこの、新規Book(コードでは 「Workbooks.Add」)を新規Bookの指定のセル(D5とA1)の内容をファイル名にしてパスで指定したフォルダに保存する。が出来ません。 自分で出来たところまでを書いてしまったので、その先の保存の仕方が分らない、と思われてしまう記載でした。 一旦閉じて、出直します。 お手数をおかけしました。 Sub Macro1() Rows("20:48").Select Selection.Copy Workbooks.Add Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.3

> 新規に開いたBook# これがたとえばtest.xlsxでしたら(A1,D5に何が入っているのか分からないのでそこは適当です) With Workbooks("test.xlsx").Sheets("Sheet1") Workbooks("test.xlsx").SaveAs Filename:=.Range("A1").Value & "\" & .Range("D5").Value End With

akira0723
質問者

補足

何度も説明不足ですみません。 新規に開いたBookというのは、当該作業Bookのファイル➣新規➣空白のBookで開いてくる毎回新規のBookのことで、1回目のVBAではBook1で2回目はBook2で勝手に開いてくるBookのことです。

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

> 全て1つのコードで動いても良いのですが 現状動いている「シートをコピーして貼り付けているコード」の最後に先ほどのコードを追加すればいいだけだと思いますが(貼り付けた後に何も操作することがなければですが)

akira0723
質問者

補足

何度もありがとう互いざいます。 単に貼り付けてみましたが、何度やっても保存で止まってしまします。 元のBook「A」のコードで新規に開いたBook#のSheet1のセルA1の値で保存することはできるのでしょうか? コピペ、保存(起動してきたBookにコードを貼り付けての)単一操作のコードでは期待通りに動くことは確認しました。 当方のレベルでは単にコピペする以外はわからないので何か基本的なことが抜けている可能性ありです画。

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

D5がパスでA1がファイル名で新規ブックがアクティブな状態の時(貼り付け直後ならアクティブなような気がしますが)でしたら ActiveWorkbook.SaveAs Filename:=Range("D5").Value & "\" & Range("A1").Value すでにブック名がわかるのでしたら(アクティブよりこちらが間違いないと思います) Workbooks("新規Book1のブック名").SaveAs Filename:=Range("D5").Value & "\" & Range("A1").Value

akira0723
質問者

補足

早々のご回答ありがとうございます。 ご回答のコードで期待通りに動くこと確認できたのですが、今回一番わからないのはコードの保存場所なのです。 作業手順としては,既存のBookの1枚のシートだけをコピーして新しいBookに張り付けたものを,そのシートの決まったセルの内容で、フルパス指定したホルダーに保存したいのです。 保存前にシート保護するのを忘れたのですが、保護の追加は何とかできそうです。(このレベルですので質問が分かりにくく申し訳ありません) 尚、A1、D5はA1+D5で作られる文字列をファイル名にして保存したく。 この辺も自分でなんとかなると思うのですが、新しく起動してきた例えばBook1にはコードが書き込まれていません。 コードを「個人用」に保存するとPCが限定されてしまうと思います。(NET調べ) VBAの起動はシート上にボタンを作ってこれをクリックすることで動くようにしたいです。 もし、毎回の新規BookでのVBAの起動がハードルが高いようなら、元ファイルの必要な行、列範囲を指定したファルダにある特定のファイル名「コピペ用原紙」のシートに行、列指定してコピペという方法でも良いのですが。。。。 それを「コピペ用原紙」のマクロボタンクリックでA1+D5のファイル名で指定フォルダに保存される。 全て1つのコードで動いても良いのですが、この場合の問題点は当方には想像すらできませんのでステップbyステップでお願いして次第です。(余計に分かりにくくなったかもです) 第2案の方が簡単かも、と直ぐに思いついたのですが、補足説明する場所が無くて困っていました。 質問の意図が分かりにくくてすみませんでした。

関連するQ&A

  • エクセルのシートのコピーについて

    シートのコピーをVBAで行いたいのですが、エラーになってしまいます。 間違っている箇所が分からないのでご教授お願いします。 貼り付けというブックにマクロが組まれています。 ”データ”のブックにあるシート名が”貼り付けのブックのリスト”のシートに記載されています。 リストのシートに記載されているシートを貼り付けのブックにコピーしたいです。 よろしくお願いします。 Sub シートコピー() 行数 = 2 Do Until IsEmpty(Cells(行数, 3).Value) コピー元 = Workbooks("貼り付け.xls").Worksheet("リスト").Cells(行数, 3) Workbooks("データ.xls").Worksheet(コピー元).Copy After:=Workbooks("貼り付け.xls").Sheets(Workbooks("貼り付け.xls").Sheets.Count) 行数 = 行数 + 1 Loop End Sub

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • エクセル 他のファイル(ブック)へシートをコピー

    エクセル(2003)で他のファイル(ブック)にシートをコピーする場合,コピー元のシートに他のシートの値を参照するセルがあると,コピー後のシートに参照エラーが起きてしまいます. これを回避するため,コピー元のシートを全選択してコピーし,コピー先で「形式を選択して貼り付け→数値と数値の書式」をした後,再度コピー元のシート全選択コピーし,コピー先で「形式を選択して貼り付け→書式」とする,という方法で今は作業していますが,一発でできる方法はないでしょうか. もちろん,コピー先にコピー元の数式を反映させる必要はなく,値がコピーできればOKです,

  • エクセル VBA 特定のシートを保存

    エクセルファイルで複数シートがある中で特定のシートのみをボタンを押すことで以下の要件を満たした形で別ファイルとして保存したいと思っていますが、何分VBA初心者の自分にはハードルが高く困っています。どうかお助け下さい。 要件 ①ファイル名はシート名+(セルW5の数値)  セルW5の数値はシート1から飛んできている数式 ②保存先は任意のフォルダーを指定 ③保存後のファイルにはマクロボタンを消去 ④拡張子はxlsx形式で保存 高望みだと思いますがどうぞよろしくお願いします。

  • エクセルで複数のシートをまとめて一度にコピーし、一度に値を貼り付けることができますか

    10枚のシートにリンクが張ってあるのですが、数値を確定してブックを保存したいのです。今までシートごとにコピーし、値の貼り付けをしていたのですが、面倒なのでできればシート10枚全てを一度にコピーして、一度に値の貼り付けしたいのですが、そんなことができますか教えてください。

  • EXCEL VBA 他ブックのシートのコピー方法

    今開いているブックに、開いていない他のブックのシートをコピーする記述方法を教えて頂けませんでしょうか。(Office365を利用)  開いているブック :A.xlsx  シート:a  開いていないブック:B.xlsx  シート:b bをaの後ろにコピーする方法を教えてください。aにボタンを置いて、それをクリックしたらという方法でも構いません。 よろしくお願いします。

  • Excelマクロ(VBA)のブックとシートのコピーについて

    初めまして、宜しければVBAのブックやシートのコピー(操作)についてご教授お願いいたします。 Windows XP x64 OFFICE2003 を使用しております。 D:\Book1.elxのsheet1のシートをD:\test\Book2.elxのsheet1のシートに コピーする方法が恥ずかしながら理解できておりません。 以下が行いたい事です。 Sub ボタン1_Click() 'text1ブックを開く 'Workbooks.Open "D:\micro\test1.xls" 'ブック間のシートをコピー Workbooks("test2.xls").Worksheets("シート2").Copy _ After:=Workbooks("test1.xls").Worksheets("Sheet2") End Sub VBのファイル操作とは違い、どのように行えば良いのか検索しても同じような部分サンプルのようなものしか無く、理解できておりません。 参考でも結構ですのでご教授いただけませんでしょうか? よろしくお願いいたします。

  • 異なるブックのデータを同一シートに貼り付けるには

    いつもお世話になっております。 異なるExcelブックのデータ(リスト形式)を一枚のシートに貼り付けるにはどのようなプログラムを組めばよろしいでしょうか。 ・ExcelファイルはOutlookの受信メールにひとつずつ添付されており、各ブックにはシートが一枚のみがあるものとします。 ・受信メールは全て特定のメールフォルダに保存されています。 (1)受信メールの添付のExcelファイルを開く (2)シートの2行目から5行目を選択してコピー (3)"統合"シート(別ファイル)に貼り付け (4)Excelファイルを閉じる (5)次の受信メールのExcelファイルを開いて2行目から5行目をコピー→"統合"シートの最終行の次の行に貼り付け→ファイルを閉じる。 (6)メールフォルダの中の全ての添付ファイルについて(5)を繰り返す。 なお、ファイルを開かなくても貼り付け作業ができる場合にはそちらでお願いします。 よろしくお願いします。

  • Excel VBA 非表示の別ブックへシートコピー

    Excel2010のVBAで、別のExcelブックを非表示で開いて、 シートをコピーすると、 「実行時エラー'1004':WorksheetクラスのCopyメソッドが失敗しました。」 というエラーが出て、正しくシートをコピーすることができません。 (1)のように自分のブックへはシートをコピーすることはできるのですが、 (2)のように別のExcelブック上でシートをコピーする場合と (3)のように別のExcelブック上にシートをコピーする場合の いずれも同様のエラーになります。 どのように記述すれば(2)と(3)でもコピーすることができるのでしょうか。 ------------------------------------------------------------- Sub test()  Dim newEx As Excel.Workbook  Dim newFile As String  newFile = ThisWorkbook.Path & "\New_Book.xlsx"  Set newEx = Workbooks.Open(newFile, UpdateLinks:=0)  Application.Windows("New_Book.xlsx").Visible = False  '(1)New_BookのSheet3を自分のブックにコピーする (正常)  newEx.Worksheets("Sheet3").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)  '(2)New_BookのSheet3をNew_Bookにコピーする (エラー)  newEx.Worksheets("Sheet3").Copy after:=newEx.Sheets(newEx.Sheets.Count)  '(3)自分のブックのSheet3をNew_Bookにコピーする (エラー)  ThisWorkbook.Worksheets("Sheet3").Copy after:=newEx.Sheets(newEx.Sheets.Count)  Application.Windows("New_Book.xlsx").Visible = True  Application.DisplayAlerts = False  newEx.Save  newEx.Close  Application.DisplayAlerts = True  Set newEx = Nothing End Sub -------------------------------------------------------------

  • エクセルシートをファイル名+シート名で保存したい

    エクセルのブック内にある複数のシートを分割して保存するとき ブック名+シート名.xlsx とファイル名を付けて保存する方法があれば教えていただけないでしょうか。 よろしくお願いします。

専門家に質問してみよう