記事の詳細

先日、お客様より「Excelファイルに50位シートがあって、それらのシートをそれぞれ別のファイルにして保存をしたい」という相談をいただきました。

Excelにはそのような機能はありません。このようなときはVBAを使ってプログラミングすることで実現します。
Excel初心者でも、以下の手順通りに操作すればきっとできると思います。

次のようなExcelファイルがデスクトップに保存されているとします。
エクセルファイルの確認

このファイルの中の3つのシートをそれぞれ別ファイルにして自動的に保存してくれるマクロを組み込んでみます。
それでは、操作です。

ステップ1 まずは「開発」タブを出しましょう

以下の図のように、[開発]タブが表示されるようにしましょう。
もし、すでに表示されているのであれば、この操作は不要です。
開発タブが表示された

[ファイル]をクリックします。
ファイルをクリック

[オプション]をクリックします。
オプションをクリック

[リボンのユーザー設定]をクリックし、「開発」をクリックしてチェックONにします。
開発にチェックを付ける

[OK]をクリックします。

[開発]タブが表示されました。
開発タブが表示された

ステップ2 VBAを作る

[開発]タブが表示されたら、プログラミングコードを記述していきます。

[開発]タブをクリックし[Visual Basic]をクリックします。
Visual Basic Editorをクリック

以下のような画面が表示されます。(Visual Basic Editorと言います)
VBEの画面

[挿入]→[標準モジュール]をクリックします。
挿入→標準モジュールをクリック

標準モジュール「Module1」が表示され、その内容が右側に表示されます。
現在は何もかかれていない真っ白な状態です。
Module1が表示されます

次のコードをコピーします

Module1にコードを貼り付けます。
コードを貼り付け

ステップ3 マクロ有効ブックとして保存する

VBAのコードを含むExcelファイルは「マクロ有効ブック」として保存する必要があります。

Excelのマークのボタンをクリックします。
Excelボタンをクリック

Excelの画面に戻ってきます。
エクセルに戻ってきた状態

[ファイル]をクリックします。
ファイルをクリック

[名前を付けて保存]→[コンピュータ]→[デスクトップ]をクリックします。
保存さきとしてデスクトップを指定

ファイルの種類を「Excel マクロ有効ブック」に設定します。
ファイルの種類を変更

[保存]をクリックします。

ステップ4 マクロを実行

いよいよ最後のステップです。
作成したマクロを実行することで、複数シートの内容が自動的に別ファイルになってデスクトップにどんどん保存されていきます。

[開発]タブをクリックし[マクロ]をクリックします。
マクロボタンをクリック

「Sheet Save」をクリックし[実行]をクリックします。
実行をクリック

下図のように、Sheet1~Sheet3の内容がそれぞれ別ファイルになって保存されました。
結果の画面

ご質問のあったシート名をそのままファイル名にする方法も紹介しておきます。

いかがでしたか?
エクセルの標準機能に無いものは自分で作ることもできます。
プログラミングができると仕事の効率も幅も広がりそうですね。

相模原市産業会館パソコン教室でお待ちしております。

相模原市産業会館パソコン研修では「アットホーム」な雰囲気でパソコンを分かるまで学ぶことができます。

月曜日から金曜日まで毎日無料体験を開始しております。

bana-pasoken-blog

 

この記事であなたの課題を解決することができましたか?

疑問点があったり、解決できなかったことがありましたら、お気軽にご相談してください。


ほかの投稿も読んでみませんか?

  1. アバター
    • はな
    • 2018年 4月 22日

    教えて欲しい、という内容でもよろしいでしょうか?

    エクセル2010でデータベースを作成し、そのデータを拡張表に出力したいと考えています。

    1つのエクセルファイルの1つのシートをデータベースにして、
    複数のシートから、帳票毎にデータを抽出して印刷したいのです。

    VBAは判っていませんが、なんとか作成できないかと・・・。

    1つ目として、マクロの記録は作成できますので、
    各シート毎にそれぞれで友好なマクロを作成する方法を教えて頂けないでしょうか。

  2. インクループ株式会社
    • インクループ株式会社
    • 2018年 4月 23日

    はな 様
    コメントをありがとうございます。

    1つのエクセルファイル内に複数のシートがあり、
    そのうちの一つがデータベースの役割をしている。
    これを「データベースシート」と便宜上呼びます。
    その他のシートは印刷用であり、データベースシートからデータを参照して、
    印刷を実行するという形でしょうか。

    おそらく、ご質問の内容ですと各印刷用シートにおいては
    VLOOKUP関数を使用してデータベースシートの内容を参照して、
    印刷を実行することになります。

    さて、ご質問の件ですが、
    マクロは通常、全シートから呼び出すことができます。
    問題は呼び出し元のシートが何か?によって動作が変わることです。

    例えば
    1.A1に「あああ」と入力
    2.印刷を実行

    上記のマクロを作成した場合、Sheet1で実行すれば、
    Sheet1のA1に「あああ」と入力後に印刷が実行されます。
    Sheet2で実行すれば
    Sheet2のA1に「あああ」と入力後に印刷が実行されます。
    もし、どのシートから実行されても
    Sheet1に「あああ」と入力後に印刷が実行されるようにするには、
    「Sheet1を選択する」という動作をマクロの最初に含める必要があります。

    ◆記録手順
    1.「Sheet1」以外を選択しておく
    2.マクロの記録を開始する
    3.「Sheet1」を選択する
    4.セルA1に「あああ」と入力する
    5.印刷を実行する
    6.マクロの記録を修了する

    もし、その他何かご質問がありましたらお願いいたします。

  3. アバター
    • はな
    • 2018年 4月 23日

    有難う御座います。
    説明が不十分で、意図が思う様に伝わらなかったようです。

    DBデータシートにデータを蓄積後、
    そのデータシートから、必要情報を抽出して印刷したいのです。

    抽出するシートは、印刷フォーマットの分だけ用意します。
    それがシート毎にできると良いかな?
    と思った次第です。

    と言うのは、マクロボタンを用意してトライしていますが、新たにマクロを記録して確認すると、
    前に作成したマクロボタンをクリックするとエラーになってしまいます。

    この事より、マクロをシート毎に分けたほうが良いのではないかと思いました。
    複数のシートから、データベースよりデータを抽出したいのです。

    上手い方法があるかどうかアドバイスを頂けると有難いです。

  4. アバター
    • 岡田
    • 2019年 4月 07日

    VBAコード中の変数iの定義が抜け落ちているかと思われます。

  5. インクループ株式会社
    • インクループ株式会社
    • 2019年 4月 07日

    コメントありがとうございます。
    変数宣言を追加しておきました!

  6. アバター
    • さとう
    • 2019年 5月 17日

    Excelでシート毎に別ファイルにして保存する方法」を拝見して挑戦してみました

    マクロをコピーして実行をするとエラーが出てしまいます。

    実行時エラー1004  と表示されます。

    勉強不足で何が何だか解りません。

    お手数ですがご教示お願い致します。

  7. インクループ株式会社
    • インクループ株式会社
    • 2019年 5月 17日

    コメントありがとうございます。
    1004のエラーが発生するのは以下の4つのパターンに分類されます。

    1 存在しないファイルを開こうとしたとき
    2 Cellsプロパティの選択範囲に値を入れ忘れてしまったとき
    3 コピー元とコピー先のセル範囲が違うとき
    4 アクティブになっていないシートのセルを選択したとき

    今回の場合、1が原因である可能性が高いと考えられます。
    マクロを記述した後、保存して、Excelファイルをファイルの種類を「Excel マクロ有効ブック」に設定してから保存しておりますでしょうか?

  8. アバター
    • mrrclb48z
    • 2020年 1月 15日

    リンクしました。ありがとうございました。
    https://ja.stackoverflow.com/questions/62267/excelでページ毎に別ファイルにして保存する方法を探しています

  9. アバター
    • カズ
    • 2020年 4月 18日

    記事の通り成功しました。
    唯、コピーして開いたファイルが閉じれてないので、ファイル数が多くなると手動で閉じなければならないのは不便に思いました。
    出来ましたら、
    閉じるところまでと、ファイル補間場所を指定できる記述があれば教えてください。
    よろしくお願いします。

  10. インクループ株式会社
    • インクループ株式会社
    • 2020年 4月 20日

    コメントありがとうございます。
    コピーして開いたファイルを閉じる方法はちょっと難しいですね。。。
    開いたエクセルファイルを一気に閉じる方法ですが、タスクバーでエクセルのアイコン上で右クリックすると、一番下に「すべてのウィンドウを閉じる」という選択肢がありますので、それで一気に閉じることができますので、お試しください。
    エクセルに限らず同じアプリをたくさん開いている時には便利に使えます。

  11. アバター
    • 匿名
    • 2020年 4月 29日

    お返事ありがとうございます。
    すいませんメールでのご回答かと思い気づくのが遅れました。
    あと、説明不足でした。
    そちらの方法でやっていたのですが一ブック閉じるたびに
    保存の有無を問うwindow が表示され、結局一ブックずつ
    閉じなくてはなりません。
    やはり対応できる記述はないのでしょうか?

  12. インクループ株式会社
    • インクループ株式会社
    • 2020年 4月 30日

    https://excel-ubara.com/excelvba5/EXCELVBA217.html
    他のブックを開いて閉じるVBAのサンプルとして、上記をお試しいただけるとできると思います。

    大変申し訳ありませんが、弊社が現在ステイホーム休業中のため、対応が十分にできず申し訳ありません。
    どうぞよろしくお願いいたします。

  1. この記事へのトラックバックはありません。

相模原のお店やサービスをどんどん紹介!

行ってみよう相模原 相模原市のお店限定

飲食店

ページ上部へ戻る