和風スパゲティのレシピ

日本語でコーディングするExcelVBA

アクティブシートを新規ブックにコピーするマクロ

アクティブシートを新規ブックにコピーするマクロを紹介します。


ソースコードはこちら↓

Sub アクティブシートを新規ブックに出力する()
    ActiveWindow.SelectedSheets.Copy
End Sub

すさまじく短いマクロですね(笑)


このマクロを実行すると、

移動またはコピーダイアログ


この「シートを移動またはコピー」
⇒「移動先:新しいブック」
⇒「コピーを作成する」⇒「OK」の手順を実行してくれます。


「データが重いので集計表シートだけ外に出して、
 値貼り付けで関数を切って提出」

みたいな作業でよく使いますね。


コードは短いですが手でやろうとしたときの手順が長いので、
結構重宝する汎用マクロです。

このコードをExcel起動時に裏で開かれる「個人用マクロブック」などに搭載し、
クイックアクセスツールバーやショートカットキーへ登録して使ってください。

コードの解説

WorksheetオブジェクトのCopyメソッドは引数「After/Before」を指定しますが、
これを省略すると新規ブックに出力してくれるという便利な仕様があります。

なので、タイトルのコードを実行するのは、

ActiveSheet.Copy

だけで行けてしまうお手軽さですね。


実際は複数のシートをセットでコピーしたいこともあるので、
アクティブシートではなく選択中のすべてのシートを取得する

ActiveWindow.SelectedSheets.Copy

こちらをコードに採用しています。


1枚のシートで実行した場合はActiveSheet.Copyと同じ処理ができますので、
こちらが便利かと思われます。

ご活用ください(´∀`)

おまけ:イミディエイトウィンドウを活用する

今回のコードは完璧に1行のコードなので、
マクロにするのではなく、イミディエイトウィンドウで実行する手もあります。

 

読み 単語
あcc ActiveWindow.SelectedSheets.Copy

みたいに変換を辞書登録しておいて、

  1. Alt + F11 でVBEを開く
  2. Ctrl+ G でイミディエイトウィンドウに移動
  3. あcc+Space(変換)+Enter×2

で実行ができますので、
自作マクロをリボンやショトカに設置できない環境ではこちらを使ってください。


辞書登録+イミディエイトウィンドウの技は結構便利ですので、
引き出しの一つとして持っておくと、いつか何かの役に立つかもしれません。

心の片隅にでも置いておいてください。