シートを1つ1つ別々のExcelファイルに自動出力する − GoGoマクロ

HOME > レッスン > 自動ファイル出力

シートを1つ1つ別々のExcelファイルに自動出力する

自動ファイル出力マクロ


pickup
当講座の公式テキスト
『エクセル仕事の自動化が誰でもできる本(日経BP刊)』



今回は、シートを1つ1つ別々のファイルに出力する(下記リクエストの) マクロの作り方を詳しく解説していきます。

◆「こんなマクロが作りたい!」リクエスト紹介
投稿者:典子さん

 > 仕事でエクセルをつかって毎月レポートの作成があります。
 > 例として顧客の状況リストがあります。これをもとに毎月や
 > っていることをお知らせします。何とかマクロでできないでしょうか。
 >
 > 1、CompanyAのシートを選ぶ
 > 2、コピーして別の新ファイルとして保存する
 > 3、ファイル名をCompanyA+今日の日付で保存して閉じる
 > 4、CompanyB以降同じことを繰り返す、大体30社分
 >
 > 何かいい方法ありますでしょうか?
 > 毎月手が腱鞘炎になりそうです。なにかあったら本当に嬉しいです!



1)
まず今回は、コピー元となる表を作っておきます。
――――――――――――――――――――――――――――+
1.エクセルを起動させます。(空のエクセルを立ち上げてください)
 ※シートが1のみある場合は、予めもう2つ([Sheet2]と
 [Sheet3]を)新規作成しておいてから 次へ進んでください。

2.まず、シート[Sheet1]のA1のセルを選択し、111 と打ってください。

3.そのシート[Sheet1]のシート名を、"山田商事" に変更します。
(シート名の変更方法は、下のシートタブを右クリック→名前の変更(R)
 や、シートタブをダブルクリックして直接変更するなど、やり慣れた
 方法で行っていただいて構いません。)

4.次に、同様にシート[Sheet2]のA1のセルを選択し、222 と打ち、
 そのシート名を、"鈴木建設" に変更します。(※[Sheet2]がない
 場合は、新規に作成してください。)

5.もうひとつ同様に、シート[Sheet3]のA1のセルを選択し、333 と打ち、
 そのシート名を、"佐藤運送" に変更します。
――――――――――――――――――――――――――――+



2)
次に、例のごとくマクロの記録を使って簡単なマクロを作ってみます。
――――――――――――――――――――――――――――+
1.まず、最初のシート[山田商事]を開いてから、
 [開発]タブの[コード]で [マクロの記録] をクリック →
「マクロの記録」画面が出るので、そのまま[OK]をクリック。

2.次に、以下の操作にてこのシートを新しいブックにコピーします。

 [山田商事]のシートタブを右クリック → [移動またはコピー(M)...]
 →「シートの移動またはコピー」画面の[移動先ブック名(T)]のプル
 ダウンから(新しいブック)を選択し、下方の[コピーを作成する(C)]
 にチェックを入れてから、その下の[OK]ボタンをクリック。

3.そして、2.によって新しくできたブック[Book2]を、以下の操作にて
 別名で保存します。

 左上[ファイル]メニュー → [名前を付けて保存] → 「名前を付けて
 保存」画面で [ファイルの種類(T):] に「Excelブック(*.xlsx)」が
 選ばれているのを確認し → [ファイル名(N):]を "山田商事" として
 から[保存]ボタンをクリック。
(このExcelファイルはマクロを含まない(データだけの)ファイルとなり
 ますので、ファイルの種類は拡張子.xlsxです。) 

4.そしたら、このブックを閉じます。
 左上[ファイル]メニュー → 4番目の[閉じる] をクリック。

5.最後に、
 [開発]タブの[コード]で [■記録終了] をクリックして、
 マクロの記録を終了させます。
――――――――――――――――――――――――――――+

ちょっと操作説明文は長くなりましたが、この辺は普段みなさんも必ず頻繁に やっているであろう至って簡単なエクセル操作ですよね。それを単純にマクロ に記録したというだけです。



3)
それでは、いま作ったマクロプログラムの中身をのぞいてみましょう。
――――――――――――――――――――――――――――+
1.[開発]タブの[コード]で [Visual Basic]をクリック。
 すると、もう見なれたマクロプログラム用の画面が表示された
 と思います。

2.この画面の左上半分の[+標準モジュール]という所の+の部分
 をクリックすると、そのすぐ下に[Module1]と表示されるので、
 その[Module1]をダブルクリックします。
――――――――――――――――――――――――――――+


++++++++++++++++++++++++++++―
Sub Macro1()
'
  Sheets("山田商事").Copy
  ActiveWorkbook.SaveAs Filename:= _
    "C:\Users\3taro\Documents\山田商事.xlsx", ・・・
    xlNormal, Password:="", WriteResPassword:="", ReadOnlyReco ・・・
    , CreateBackup:=False
  ActiveWorkbook.Close
End Sub
++++++++++++++++++++++++++++―

ちょっと複雑そうにも見えますが、実はこれはプログラムとしてはたった3行 のごく短いものです。

VBAでは行の最後が" _"(半角のスペース+アンダーバー)で終わる場合、そ の行が次の行にも続くということを意味しますので、このプログラムの場合、
「 ActiveWorkbook.SaveAs Filename:= _ 」から「 , CreateBackup:=False 」 までは、1つの行という扱いになります(見た目上、横に長くなってしまう のでマクロの記録の機能が気をきかせて改行してくれているだけです)。

この長い行でこの場合に必要なのは、最初の部分の 「 ActiveWorkbook.SaveAs・・・ 」から「 ・・・\山田商事.xlsx" 」まで だけです。

また、「 "C:\Users\3taro\Documents 」の部分は、コピー先のファイル保存 場所にあたるフォルダのパス名です。
この部分は当然のことながら、Windowsのバージョンやログインユーザ名など 個々のパソコン環境によって違ってきますので、みなさんは、いまマクロの 記録で記録されたプログラムのパス名のまま変更はしないでください。

そのあとの「 山田商事.xlsx" 」という部分は、先ほど保存した時に付けた ファイル名ですので、全員が必ず同じはずの部分となります。



4)
それでは、このプログラムにちょっと手を加えてみたいと思います。
――――――――――――――――――――――――――――+
1.まず、いま説明にあった長い行の必要のない部分をばっさり
 と削除してしまいます。
 「 ・・・\山田商事.xls" 」の次のカンマ "," から以降(カンマも含む)
 「 , CreateBackup:=False 」まで(「 ActiveWorkbook.Close 」の上の
 行まで)をDeleteキーで削除してください。

2.「 Sheets("山田商事").Copy 」の行の「山田商事」を次のように
 「鈴木建設」に書き換えます。
「 Sheets("山田商事").Copy 」 → 「 Sheets("鈴木建設").Copy 」

3.同じく、「"C:\Users\3taro\Documents\山田商事.xls"」の行の
「山田商事」を「鈴木建設」に書き換えます。
  「 ・・・\山田商事.xlsx" 」 → 「 ・・・\鈴木建設.xlsx" 」
――――――――――――――――――――――――――――+

書き変えた後のプログラムはつぎの様になります。
(先ほど言ったように、「"C:\Users\3taro\Documents」の部分は、 個々のパソコン環境によって違ってきます)

++++++++++++++++++++++++++++―
Sub Macro1()
'
  Sheets("鈴木建設").Copy
  ActiveWorkbook.SaveAs Filename:= _
    "C:\Users\3taro\Documents\鈴木建設.xlsx"
  ActiveWorkbook.Close
End Sub
++++++++++++++++++++++++++++―



5)
それでは、実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、(開くシートはどれでも構いません)

2.[開発]タブの[コード]で [マクロ] をクリック → 「マクロ」
 画面が出るのでそのまま[実行]をクリック。
――――――――――――――――――――――――――――+

デスクトップの[マイ ドキュメント]などで自分のパソコンのファイル保存 場所のフォルダを開いてみて、"鈴木建設.xlsx"という名前のファイルが出来 ていることを確認してください。

念のため、そのファイルを開いて、A1のセルに 222 と表示されていれば正し くコピー元のシート[鈴木建設]の内容が保存されたという確認ができたこと になります。


今回はこれで終了です。

今日作ったマクロプログラムは次回もこの続きでまた使いますので、次回まで 大切に保管して置いてください。
(ファイルの種類 [Excelマクロ有効ブック]、ファイル名 "gogo20.xlsm" )



マクロ初心者(入門者)の皆さんへ

こんにちは、「Go!Go! エクセルマクロをはじめよう!」筆者の三太郎です。
私はこの道25年、現役バリバリのベテランSE(システムエンジニア)をしています。 なので、業界にどっぷり染まってしまった IT業界人 です。(笑)

マクロ(エクセルのプログラミング)がどれだけ便利なものなのか・・・ ということは、 皆さんもうよくお分かりいただけてる(!?)ものと思いますが、でも 「やっぱ、中々取っつき難い、ハードルが高い、素人には難しい。」 そう感じている方も多いかと思います。

エクセルをほぼ1日中使ってる人が多い職場であっても、マクロを使える人はほとんど居ません。 (30人の職場で精々1人か2人居ればいいほうかと思います。。) 私は、そのような現状(PC仕事の非効率)を改善して、日本にもっと効率良いIT化の機運を 高めて行きたい!そう願って、今から十数年前にこのようなメルマガ講座を始めました。

マクロを始める為の条件は、エクセル上級者ではありません! 頻繁にエクセルを使ってる人、 ただそれだけです。エクセルの操作レベルはまったく関係がありませんので、 エクセルユーザーの全ての皆さんが当メルマガ講座の参加対象者です。

パソコン仕事で この上なく便利なエクセルのマクロ というものを、もっと多くの人に知って欲しい、使って貰いたい。その想いだけで、長年メルマガの 無料配信を続けてきました。今では、この分野では異例とも言える1万人を超える大勢の皆さんに ご登録いただいているメルマガ講座に成長いたしました。 読者の皆さんからのご声援のお陰です。本当、ありがとうございます。

当メルマガ講座では、簡単に出来るマクロ作成法のコツとその手順を教えています。 とにかく作って、動かす。だから楽しくなってきます。 VBAのカタカナ用語や難しい仕組みの理解、構文暗記といった従来型の不必要な勉強は一切しません! なぜなら、エクセル作業の自動化にその必要は一切ないからです。 初心者がすぐに挫折するカタカナ用語羅列のマクロ勉強なんて、殆どの人には役に立ちません!

マクロとは、エクセルの作業を自動化する為の道具に過ぎません! マクロを組む為に難しいプログラムの仕組みや わけのわからないカタカナ専門用語を覚える必要など毛頭ないわけです。 私はこれまで十数年間、大勢の読者に教えてきて、Excel自動化に成功した沢山の人を生み出してきた 経験で、そう断言します! (本屋に並ぶVBA参考書のライターレベルの人の言うことを真に受けて、 あなたに必要のない”勉強の為の勉強”をしてしまわぬよう、 くれぐれもご注意ください。)

ここでは、「これからマクロを始めてみようかな?」と思ってる方や、 すでにどこかで勉強して「すぐに挫折してしまった・・(>_<)」という方に、 安心して勉強のできる方法とその実習環境とが用意されています。 もし、あなたが過去に挫折した経験者であれば、きっと私が常々言っている 勉強すべき事とすべきでない事 その違い(ここの初心者学習環境の素晴らしさ・・)というものがすぐに分かっていただけるだろうと思います。

マクロ(VBA)というのは多義に渡ります。アマチュアのサンデープログラマーから ベテランの上級者やプロに至るまで、実に幅が広いものです。 初学者には到底 必要のない 難しい部分まで勉強してしまうから当然、 必ずずぐに挫折する事になります。

残念ながら、「まだピカピカの小学一年生(初心者)に、いきなり掛け算や割り算はおろか、 三角関数や微分積分までも教えてしまうような痛ましい光景」を、ネットでも参考書でもセミナーでも、 VBAの世界ではたくさん目にします。

だから、「何を勉強するか」ではなく「何を勉強しないか」 初心者にはその正しい選択が重要なんです。勉強の範囲を 初心者の領域(Excel業務の効率化)だけに絞ってやりさえすれば 、さほど難しく考える必要はありません。それで、難しく、さっぱりちんぷんかんぷんだと思っていたマクロが 楽しく、 どんどん楽しく、勉強できるようになります。

→ エクセルマクロを10分で理解する!(YouTube動画)


あなたもこの三太郎式マクロ勉強法で、面倒なExcel仕事の自動化を ぜひ、この他にはない画期的な方法で実現してください。あなたの 参加を(下記無料メルマガへのご登録を)お待ちしてます!! (少々、力説し過ぎて話長くなりました。すみません。m(__)m)



 
最新号 は、下記にアドレス登録すると無料配信されます。

▼マクロ講座の登録はこちら((無料)) まぐまぐ
Go!Go! エクセルマクロをはじめよう! (マガジンID:0000135169)   
メルマガ登録
  メールアドレス:

 

読者数1万人達成しました!

エクセルで 最大級の
メールマガジン。
まぐまぐ殿堂入り

最新号は 今すぐ ↓↓↓ 登録

メールアドレス:

Powered by
まぐまぐ

完全まぐまぐ配信なので登録安心です!