「エクセルファイルの新規作成 → 保存」操作を完全自動化するマクロ

疑問がある人
こんな要望にお応えします。
結論から言うと、「ブックを新規作成するVBA」、「別のブックに情報を転記するVBA」、「名前を付けて保存するVBA」の3つを組み合わせたマクロを作成する!です。
私の仕事では以下のような処理が必要なエクセル業務があります。
ありとあらゆる情報が記載された設備一覧から一部の情報を別のブックに取り出して編集する業務

悩んでる人
こんな問題を解決するために開発したのが、必要な情報を新規ブックに転記し、名前をつけて保存するマクロです。
この記事では、必要な情報を新規ブックに転記し、名前をつけて保存するマクロの特徴、導入方法、使われているVBAについて詳しくご紹介しています。
同じような作業を自動化したい!と考えている方は是非参考にいてみてください。
目次
必要な情報を新規ブックに転記し、名前をつけて保存するマクロとは
「必要な情報を新規ブックに転記し、名前をつけて保存するマクロ」は、新規ブックに情報を転記して決められた場所に保存する!というエクセル作業の効率をアップさせることが可能です。

ひらめく人
ブックに付ける名前は自由に編集可能です。サンプルではファイル名に年月日と時間を含めることで、ファイル名が被ってしまう事態を防ぐことができます。
サンプル事例
紹介するサンプル事例は実際の仕事で行っていたエクセル業務を参考にしています。
サンプル事例の処理内容
- ありとあらゆる設備情報が記載されている「設備台帳」から「設備場所」「品名」「取付日」の3項目の情報を新規ブックに転記
- 情報が転記されたブックに名前をつけて(データ管理+年月日+時間)デスクトップに保存
ブック名の付け方が、(「データ管理」+年月日時刻)なので同じ名前のファイル名になる心配がありません。
「名前をつけて保存する」VBAを設定するときは「年月日時刻」を入れることがおすすめです。
導入方法
1.データ一覧表を作成する
2.VBAを開く
3.標準モジュールを作成する
4.標準モジュールにVBAコードを記入する
5.サンプルVBAコード
Sub 新規作成()
Dim Ash As Worksheet
Set Ash = ThisWorkbook.Worksheets("一覧表")
ga = Ash.Cells(Rows.Count, 1).End(xlUp).Row
Dim Bbo As Workbook
Set Bbo = Workbooks.Add
gb = Bbo.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
Bbo.Worksheets(1).Cells(1, 1) = Ash.Cells(1, 2)
Bbo.Worksheets(1).Cells(1, 2) = Ash.Cells(1, 5)
Bbo.Worksheets(1).Cells(1, 3) = Ash.Cells(1, 9)
For i = 3 To ga Step 3
Bbo.Worksheets(1).Cells((i / 3) + 1, 1) = Ash.Cells(i, 2)
Bbo.Worksheets(1).Cells((i / 3) + 1, 2) = Ash.Cells(i, 5)
Bbo.Worksheets(1).Cells((i / 3) + 1, 3) = Ash.Cells(i, 9)
Bbo.Worksheets(1).Cells((i / 3) + 1, 3).NumberFormatLocal = "yyyy年m月d日"
Next
Application.DisplayAlerts = False
Dim Filename As String
Filename = "C:\Users\〇〇〇\Desktop\データ管理" & Format(Now, "yyyymmdd_hhmmss") & ".xlsx"
Bbo.SaveAs Filename
Application.DisplayAlerts = True
Bbo.Close
End Sub
サンプルコードはコピペして使うことができます。
19行目のブックの保存場所をお使いのパソコンのデスクトップのアドレスに変更してからお使いください。
下記のサイトでは、サンプルマクロが設定されたエクセルファイルをダウンロードしてすぐに利用することができます。
必要な情報を新規ブックに転記し、名前をつけて保存するマクロをすぐに使ってみたい!マクロをアレンジして業務に応用したい!と考えている方は参考にしてみてください。
>> 必要な情報を新規ブックに転記し、名前をつけて保存するマクロのダウンロードはこちら
必要な情報を新規ブックに転記し、名前をつけて保存するマクロのメリット
必要な情報を新規ブックに転記し、名前をつけて保存するマクロを導入することで以下のようなメリットを得ることができます。
- いちいち開かずに新規ブックを作成できる
- 転記編集ミスが発生する心配がない
- バックアップ保存用マクロとしても利用可能
仕事ではエクセルのブック毎にいろんなデータを管理しているので、このマクロを導入してから作業効率を格段にアップさせることができました。
1つのブック内で、シート毎にいろんなデータを管理している!という方には以下の記事で紹介しているマクロがおすすめです。
記事では、複数あるブックを一つのブックにまとめるVBAについて紹介されています。
まとめられる情報はシート毎に名前を付けて保存されるので、どのブックの情報がどのシートに集約されたかをすぐに確認することができます。

ひらめく人
必要な情報を新規ブックに転記し、名前をつけて保存するマクロに使われているVBA
必要な情報を新規ブックに転記し、名前をつけて保存するマクロに使われている3種類のVBAについてご紹介します。
ブックを新規作成するVBA
VBAでブックを新規作成するには、Workbooks.Addメソッドを利用します。
基本構造
Dim Bbo As Workbook
Set Bbo = Workbooks.Add
「Bbo」という名称を宣言した後にWorkbook.Addでブックを新規作成します。
上記サンプルVBAコードでは、5、6行目がブック新規作成コードにあたります。
別のブックに情報を転記するVBA
別のブックに情報を転記するVBAを設定するのは、「ブックの区別」と「シートの区別」をする必要があります。
基本構造
Dim Ash As Worksheet
Set Ash = ThisWorkbook.Worksheets(“一覧表")
Dim Bbo As Workbook
Set Bbo = Workbooks.Add
Bbo.Worksheets(1).Cells(1, 1) = Ash.Cells(1, 2)
上記基本構造の内容は、
「Bbo」という新規作成したブックのA1セルに一覧表シートのB1セルの情報を転記する
という内容です。
最初に「ブックの区別」と「シートの区別」をしていることがわかります。
この2つを宣言したあとは、ひたすら情報を転記するコードを記載していけば別のブックに情報を転記するVBAの完成です。
この転記VBAはいろんなエクセル業務に応用することができるテクニックなので是非使い方をマスターしましょう。
名前を付けて保存するVBA
「名前を付けて保存」するには、SaveAsメソッドを利用します。
基本構造
Dim Filename As String
Filename = “C:\Users\〇〇〇\Desktop\データ管理" & Format(Now, “yyyymmdd_hhmmss") & “.xlsx"
Bbo.SaveAs Filename
上記基本構造の内容は、
「Filename」という変数にファイルの保存場所(サンプルではデスクトップ) + 「データ管理(年月日時刻)」を格納し、ファイルを保存する
という内容です。
Format関数を使って、ファイル名に年月日時刻を記入することで、ファイル名が被ってしまうという問題を解決することができます。
VBAを使ってファイルの保存を自動化するときにはとても便利なテクニックなので自由に扱えるようにしましょう。
VBA初心者が効率化マクロを導入する方法
VBAなんて扱ったことないけどエクセル作業を自動化するマクロを導入したい!
このような問題を抱えながら日々のエクセル業務をこなしている方がおおくいらっしゃるのではないでしょうか。
こんな問題を解決する方法がこちら
- マクロの開発を外注に依頼する
- マクロが設定されたエクセルファイルをダウンロードする
- 参考書やネットでVBAスキルを身に付ける
VBAの勉強を始める前は上記の方法で効率化マクロを導入していました。
完成されたマクロを使ってエクセル業務を処理する
↓
作業効率が2倍以上アップ!!
↓
便利すぎて自分でもマクロを設定したいと考え始める
↓
参考書やネットの情報でVBAスキルを身に付ける
↓
マクロ開発を代行できる程のスキルを習得
VBAは
他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
という特徴があります。
毎日のルーティーン作業にうんざりしている、だれでもできる単純作業に時間を費やしている、という方はあなたに合った方法でVBAを導入しちゃいましょう。
マクロの開発を外注に依頼する
マクロの開発を外注に依頼する導入方法は
VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法
です。
「こんなエクセル作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」
こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

ガッツポーズの人
デメリットは、費用がかかることだけ。
開発内容、依頼先によってかかる費用は大きく異なります。
私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

疑問がある人
ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。
開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、
費用が安い!スピード納期!!
でやらせてもらっています。
ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。
ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。
マクロが設定されたエクセルファイルをダウンロードする
VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』ですぐにエクセル作業を自動化することができます。
たとえば、
A4用紙に写真を貼り付けてコメントを入力する作業を自動化したい!という場合、
『写真を貼り付けるマクロ』が設定されたエクセルファイルをダウンロードすれば問題解決です。
実際に、『写真を貼り付けるマクロ』をダウンロードして使っている様子がこちら

ガッツポーズの人
『マクロが設定されたエクセルファイルをダウンロード』する導入方法は、
VBA初心者でもマクロを導入できる、費用が安い、
というメリットがあります。
しかし
VBAに関する情報が多く公開されているとはいえ、ネット上で想定するマクロは見つけることが難しい
というデメリットもあります。

ガッツポーズの人
個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。
今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。
参考書やネットでVBAスキルを身に付ける
先程も紹介しましたが、
VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
プログラミングです。
言い換えると、
情報量が豊富なので自分で勉強できちゃう
ということです。
私のVBAスキルはほとんど独学で身に付けたもので、
考えた処理のほとんどをVBAで表現できるレベルにまで到達した!
と思っています。
私の作ったマクロをプロのプログラマーが見れば、
お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!
と感じるはずです。
でも、
私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?
独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、
業務内容に合ったマクロを開発できるようになれます。
独学でVBAスキルを身に付けるコツは、
エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる
です。
とは言っても、全くの知識0の方は何をすればいいかわからないですよね。
VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。
VBAの知識0の方でもすいすい読み進められる内容になっています。
やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。
実際に私はこの参考書を読んでからVBAの勉強を始めました。

ひらめく人
VBAの魅力を発見した後は、
ひたすら自動化したい処理を実現するコードを書くだけ
です。
【VBA 写真を貼る】、【VBA PDF出力】、のようにネット検索すれば知りたいコードをすぐにゲットできます。
実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると
自然といろんなマクロが作れるようになっているはずです。
VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。
ディスカッション
コメント一覧
まだ、コメントがありません