• ベストアンサー

エクセル 複数フィートのコピー

こんにちは いつもお世話になっています。 複数シートを選択して右クリックから別のブックにコピーしたいのですが 全シートに関数が入っているので失敗しています。 データ(値)だけを一括コピーする方法を教えてください。 マクロが必要ならご紹介ください。 よろしくお願いします。

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

> 教えていただいたマクロで成功しているのですが、手を加えていただけないでしょうか。 > 気長にお待ちしております。よろしくお願いします。 なるほど、作れと(笑)。 さてさて、冗談はさておき、ご希望の処理 > Ctrl+右クリックで選択した複数のシートだけを対象として新規ブックにコピーしたい > 連続しているシートもあれば、とびとびのシートもある場合があるのですが > 「選択している複数シート」を対象にしたい 実は選択シートを新規ブックに完全コピーするだけなら、 先般のウダウダコードを書かなくても1行で終われます。 Sub Test2() ActiveWindow.SelectedSheets.Copy End Sub こんな感じです。 複数シートを選択して、右クリック→移動またはコピー、新規ブックへ と全く同じ作業です。 でも、このままだと関数や計算式をそのまま引き継いでしまいます。 これだと他ブックへのリンクが発生するので鬱陶しい・・という事ですよね。 なので、コピーした後に、値にしてやるコードを書きます。 Sub CopyBook2() Dim WS As Worksheet   ActiveWindow.SelectedSheets.Copy   For Each WS In ActiveWorkbook.Worksheets     With WS.Cells       .Copy       .PasteSpecial Paste:=xlPasteValues     End With   Next   Application.CutCopyMode = False End Sub なんだか少しスッキリしちゃいましたが、2010でちゃんと動きます。 お試しくださいませ。 ダメだったらまた補足でもくださいませ。 長い追記) マクロの記録と言う機能はご存知ですか? 自分が行った動きを、マクロとして記録してくれる機能(そのまま)です。 ひとまずその記録を眺めつつ、スッキリ書く方法を探すと、 それだけでかなり勉強になりますよ。 その上でわからないことは こんなコードを書いたが、なんせ上手く動かない。どうしたらいいだろう?とか もっとスッキリ書くにはどうしたらいいのでしょう?とか、 ビシバシ質問して良いと思います。 が、いわゆる「0からのコード作成依頼」は嫌われてしまいがちです。 日々のルーチン業務がかなり楽になりますから、 是非、これを機にお勉強くださいませ。

5goma
質問者

お礼

tsubuyuki 様 ありがとうございました。お蔭様で解決しました。 御丁寧に説明していただき助かりました。 大切に使わせていただきます。 また、追記にてのご注意ありがとうございました。 マクロ記録を試したうえで質問すべきでした。 今後気を付けます。 更に、質問タイトルの入力ミスに今さら気づきました。 重ねてお詫び申し上げます。 簡単で恐縮ですが、お礼申し上げます。

その他の回答 (1)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

複数シートを別ブックに一括で値貼り付け、 と言う機能は思い当たりませんので、マクロを紹介。 ・・と、いきたいのですが、条件が曖昧ですので、100%の答えは出せません。 なので、マクロを作るにあたってヒントになるようなコードをどうぞ。 以下のコードは元ブックの全てのシートを、新規ブックに値と書式を貼り付けます。 元ブックをアクティブにして実行してください。 ちなみに2010で動作確認しています。 Sub CopyBook() Dim OldBook As Workbook, NewBook As Workbook Dim WS As Worksheet, WSCount As Integer   Set OldBook = ActiveWorkbook   WSCount = OldBook.Worksheets.Count   Application.SheetsInNewWorkbook = WSCount   Set NewBook = Workbooks.Add   i = 1   For Each WS In OldBook.Worksheets     With WS       WSName = .Name       .Cells.Copy     End With     With NewBook.Worksheets(i)       With .Cells         .PasteSpecial Paste:=xlPasteValues         .PasteSpecial Paste:=xlPasteFormats       End With     End With     i = i + 1   Next   Application.CutCopyMode = False   Application.SheetsInNewWorkbook = 3   Set NewBook = Nothing: Set OldBook = Nothing End Sub より理想に近いものを望まれるなら、 ・複数シートとは全てのシートか一部のシートか ・(一部のシートの場合)連続した複数か連続しない複数か ・別ブックとは新規ブックか既存ブックか ・値だけで良いのか(列幅等の)書式も必要か くらいは最低でも記述された方が良かったと思いますよ。

5goma
質問者

お礼

tsubuyuki 様 ありがとうございました。 言葉足らずでご迷惑をおかけしました。 申し訳ありません。 教えていただいたマクロで成功しているのですが、手を加えていただけないでしょうか。 シートが多いものですから、Ctrl+右クリックで選択した複数のシートだけを対象として新規ブックにコピーしたいです。 >(一部のシートの場合)連続した複数か連続しない複数か とのことですが、たとえば、連続しているシートもあれば、とびとびのシートもある場合があるのですが、いずれにしても「選択している複数シート」を対象にしたいのですが。 書式は不要です。 気長にお待ちしております。よろしくお願いします。

関連するQ&A