【エクセルマクロ】別シートに情報を自動反映させるマクロの作り方・導入方法を紹介

【エクセルマクロ】別シートに情報を自動反映させるマクロの作り方・導入方法を紹介

 

シートから別シートに必要な情報を転記する方法ってないの?

 

こんな疑問にお答えします。

 

結論から言うと、シート名を取得するVBAを使って、別シートに情報を自動反映させるマクロを作成する!です。

 

別シートに情報を転記するマクロの概要がこちら

別シートに情報を転記するマクロの概要

 

一覧表に入力している大量の情報を、ボタンをクリックするだけで別シートの好きな場所(セル)に転記することが可能。

 

この別シートに情報を転記するマクロはシート名を取得する方法さえ理解すれば簡単に作成することができます。

この記事では画像や動画を使ってVBA初心者の方でも簡単に出来る転記マクロの作り方を紹介します。

エクセル業務の効率をアップさせたい!編集作業を自動化して楽したい!と考えている方は是非参考にしてみてください。

 

 

広告

別シートに情報を自動反映させるマクロとは?

別シートに情報を自動反映させるマクロとは?

「転記」とは別シートに情報を自動反映させることをいい、この「転記」を自動化するプログラムを「転記マクロ」と言っています。

 

下記の動画では、転記マクロがどのような処理をするのか!をわかりやすく紹介しているので参考にしてみてください。

 

動画では簡単な書類作成を例に紹介していますが、編集項目が多くなればなるほど作業時間の短縮入力ミスの防止につながります。

 

転記マクロのメリットがこちら

メリット・記入事項の変更忘れ防止

・作業時間の短縮

・セル内の数式が壊される心配がない

・図形の配置も自由自在

 

下図のように、複数の情報一瞬で転記することができるので編集スピードを格段にアップさせることが可能です。

 

私の職場では、「工事契約書」の編集に使っているエクセルファイルに転記マクロを設定しています。

工事契約書に導入した転記マクロの概要

 

Left Caption

ガッツポーズの人

エクセルが苦手な方でも簡単に書類を作成できるようになった

 

さらに応用すれば、

「一覧表」シートに入力した情報を「契約書」シート、「請求書」シート、「領収書」シートなど、複数のシートに複数の情報を転記することだって可能

です。

 

 

 

転記マクロの導入手順

マクロの導入手順を「工事契約書の編集に導入した転記マクロ」をサンプルとして詳しくご紹介していきいます。

 

様式の設定

「一覧表」シートの様式がこちら

一覧表シートの様式

 

「工事契約書」シートの様式がこちら

「工事契約書」シートの様式

 

様式の設定は業務内容によって異なりますが、マクロのコードを書き始める前にしっかり作り込む必要があります。

なぜなら、コードを書き始めた後に様式の変更をしようとした場合コードを初めから作り直すことになりかねません。

 

Left Caption

ガッツポーズの人

後々、変更がないように様式の設定はしっかり行いましょう

 

VBAの設定

①VBA編集画面を開く

VBA編集画面を開く

 

②Module1を作成

Module1を作成

 

③Module1にコードを入力

Module1にコードを入力

 

Module1に入力するサンプルコードはこちら

Sub 工事契約書転記()
   ''''''''''''''''''''''''''Sheetの設定""""""""""""""""""""""""""""
    Dim Ash As Worksheet
    Dim Bsh As Worksheet
    Set Ash = ThisWorkbook.Worksheets("一覧表")
    Set Bsh = ThisWorkbook.Worksheets("工事契約書")
    ''''''''''''''''''''''''''ユーザーフォームで入力した値を変数iで取得""""""""""""""""""""""""""""
    i = UserForm1.TextBox1.Value
    ''''''''''''''''''''''''''一覧表から工事契約書へ値を転記する""""""""""""""""""""""""""""
    '''''工事名を転記'''''
    Bsh.Range("H6") = Ash.Cells(i + 2, 2)
    Bsh.Range("H6").HorizontalAlignment = xlLeft
    '''''工事場所を転記'''''
    Bsh.Range("H8") = Ash.Cells(i + 2, 3)
    Bsh.Range("H8").HorizontalAlignment = xlLeft
    '''''工期(着手)を転記'''''
    Bsh.Range("H10") = Ash.Cells(i + 2, 4)
    Bsh.Range("H10").HorizontalAlignment = xlCenter
    Bsh.Range("H10").NumberFormatLocal = "ggge年m月d日"
    '''''工期(竣功)を転記'''''
    Bsh.Range("P10") = Ash.Cells(i + 2, 5)
    Bsh.Range("P10").HorizontalAlignment = xlCenter
    Bsh.Range("P10").NumberFormatLocal = "ggge年m月d日"
    '''''請負金額を転記'''''
    Bsh.Range("L12") = Ash.Cells(i + 2, 6)
    Bsh.Range("L12").HorizontalAlignment = xlCenter
    Bsh.Range("L12").NumberFormatLocal = "#,###"
    '''''消費税を転記'''''
    Bsh.Range("R14") = Bsh.Range("L12").Value * 0.1
    Bsh.Range("R14").HorizontalAlignment = xlCenter
    Bsh.Range("R14").NumberFormatLocal = "#,###"
    '''''発注者住所を転記'''''
    Bsh.Range("J33") = Ash.Cells(i + 2, 8)
    Bsh.Range("J33").HorizontalAlignment = xlLeft
    '''''発注者氏名を転記'''''
    Bsh.Range("J35") = Ash.Cells(i + 2, 7)
    Bsh.Range("J35").IndentLevel = 2
    '''''受注者住所を転記'''''
    Bsh.Range("J37") = Ash.Cells(i + 2, 10)
    Bsh.Range("J37").HorizontalAlignment = xlLeft
    '''''受注者氏名を転記'''''
    Bsh.Range("J39") = Ash.Cells(i + 2, 9)
    Bsh.Range("J39").IndentLevel = 2
End Sub

上記サンプルコードをModule1にコピペしてください。

 

④ユーザーフォームの作成

ユーザーフォームの作成

 

⑤ユーザーフォーム(ツール)の作成

ユーザーフォーム(ツール)の作成

 

⑥ユーザーフォーム(コード)の作成

ユーザーフォーム(コード)の作成

 

UserForm1に入力するサンプルコードはこちら

Private Sub CommandButton1_Click()
Call 工事契約書転記
End Sub

 

⑦Sheet1にコードを入力

Sheet1にコードを入力

 

「一覧表」シートを表示させたときユーザーフォームを表示させない。という内容です。

 

⑧Sheet2にコードを入力

Sheet2にコードを入力

 

「工事契約書」シートを表示させたときユーザーフォームを表示する

という内容です。

 

以上でVBAの設定は完了です。

 

ユーザーフォームを使って転記マクロを起動させる仕組みを採用しているのでVBAの設定が少し複雑になってしまいましたが、

手順通り操作していけば確実に転記マクロを導入できるはずです。

 

Left Caption

ガッツポーズの人

最初は難しく感じるかもしれませんが頑張って挑戦してみてください。

 

転記マクロに使われているVBA

転記マクロに使われているVBA

 

転記マクロに使われているVBAをそれぞれ詳しくご紹介してきます。

 

シート名を取得するVBA

転記マクロにはシート名を取得するVBAが必要不可欠です。

シート名を取得することによってブック内のシートを区別することができるようになり、

どのシートに何の情報を表示させるのか

をVBAで表現することができるようになります。

 

シート名の取得方法は、

シートを代入するための変数を宣言し、変数に好きなシート名を格納する

です。

 

基本構造

1 Dim 〇〇 As Worksheet
2 Set 〇〇 = Sheets(△△)

 

〇〇に扱いやすい変数を入れ、△に数字またはSheet名を入れるだけ!

たったこれだけでシートの宣言が完了です。

 

Left Caption

上を目指す人

私は扱いやすいように〇〇には「Ash」や「Bsh」といった短い変数を入力するようにしています。

 

工事契約書に導入した転記マクロ内のシートを区別するVBAがこちら

Dim Ash As Worksheet
Dim Bsh As Worksheet
Set Ash = ThisWorkbook.Worksheets("一覧表")
Set Bsh = ThisWorkbook.Worksheets("工事契約書")

 

VBAを記入していく中で「一覧表シートはAsh」「工事契約書シートはBsh」と表現する

という内容です。

 

Set とは Setステートメントのことで、オブジェクト変数に値を入れたいときに Set を前に記載して使用します。

オブジェクト変数はワークブック、ワークシート、セルなどのことで、「~の場所」というイメージです。

 

シート名を取得するVBAセルにテキストを入力するVBAを組み合わせることで転記VBAを作成することができます。

別シートに情報を転記させるマクロと聞けば難しい関数や数式が必要なのかと感じるかもしれませんが、難しいコードは一切必要ありません。

いくつかのサンプルを使って転記マクロについて紹介してきます。

 

転記マクロの基本構造(サンプル1)

Dim Ash As WorkSheet
Set Ash = Sheet(1)
Dim Bsh As WorkSheet
Set Bsh = Sheet(2)
Ash.cells(1,1)=Bsh.cells(1,1)

上記のVBAは、

1番左側にあるシートのA1セルに左から2番目にあるシートのA1セルを転記する

というマクロです。

 

1行目から4行目でシート名の設定をしたあとは転記したい項目の箇所を繰り返し作り込むだけで転記プログラムの完成です。

 

 

転記マクロの基本構造(サンプル2)

Dim Ash As WorkSheet
Set Ash = Sheet(1)
Dim Bsh As WorkSheet
Set Bsh = Sheet(2)
Dim Csh As WorkSheet
Set Csh = Sheet(3)
Ash.cells(1,1)=Csh.cells(1,1)

 

上記のVBAは、

1番左側にあるシートのA1セルに左から3番目にあるシートのA1セルを転記する

というマクロです。

 

シート名を区別するVBAを理解すれば編集したいシートが増えても簡単に対応できるようになります。

 

 

 

ユーザーフォームを使ったマクロの実行

サンプルで紹介している転記マクロでは、

ユーザーフォームのコマンドボタンテキストボックスを使ってマクロを実行する

方法を採用しています。

コマンドボタンとテキストボックスにの設定方法を解説していきます。

 

 

コマンドボタン

コマンドボタンはボタンをクリックするとモジュールで作成したプログラムを呼び出す!という処理ができます。

 

基本構造(コードを直接入力するパターン)

1 Private Sub CommandButton()
2 ~ここにプログラムを記入~
3 End Sub

上記のような方法でもコマンドボタンの実行は可能ですが、

直接コードを入力するのではなくCallで標準モジュールで作成したマクロを呼び出す方法

をおすすめします。

 

基本構造(Callを使ってマクロを呼び出すパターン)

1 Private Sub CommandButton()
2 Call マクロ名
3 End Sub

Callを使うことで「マクロの修正が簡単になる」「複雑なマクロをキレイにまとめられる」というメリットがあります。

関連記事「Callの使い方」では、別マクロを呼び出す方法が紹介されています。

 

ユーザーフォーム内で直接マクロを記載すると、

マクロのデバック(間違っている箇所を修正する作業)がとてもやりにくい!

というデメリットがあります。

 

「F8」キーまたは「F5」キーでマクロのチェックをしようとすると毎回ユーザーフォームが起動しうまくマクロを実行できない!という事象が起こります。

ちょっとイメージしにくいとは思いますが、ユーザーフォームのコマンドボタンにはCallによるマクロの呼び出しが絶対におすすめです。

 

関連記事「デバックする方法」では、コードの実行方法やイミディエイトウィンドウの使い方が紹介されています。。

 

 

テキストボックス

テキストボックスで入力した値をモジュールで作成したマクロで使用することができます。

 

 

テキストボックスの使い方

 

標準モジュールのマクロで「変数i」に「ユーザーフォームのテキストボックスに入力された値」を格納するという意味です。

 

工事書類を作成する転記マクロでは変数 i を工事番号(「一覧表シート」の行)で使用しています。

 

VBAでエクセル業務の効率化を実現

VBAを活用することで、エクセルでの日常業務を劇的に効率化できます。

VBAを使えば、

繰り返し作業の自動化によって人的ミスを削減し、作業時間を大幅に短縮する

ことが可能です。

 

毎日行っているデータ集計やレポート作成を自動化すれば、数時間かかっていた作業がボタン一つで数分で完了します。

エクセル作業が多い環境ではVBAの導入は必須事項である!といっても過言ではありません。

 

マクロを導入するメリット

マクロを導入する最大のメリットは、作業時間の短縮と品質の向上を同時に実現できることです。

人間が時間をかけて行う単純作業をコンピュータが正確かつ高速に処理することができます。

 

たとえば、手作業で1時間かかっていたデータ整理が、マクロなら数秒で完了し、さらに計算ミスや入力間違いも完全に防げます。

また、一度作成したマクロは何度でも使い回せるため、長期的な業務効率化投資としても非常に価値があります。

 

結果として、マクロ導入は時間コストの削減と業務品質の向上という二重のメリットをもたらします。

 

VBA学習の始め方

VBA学習の最も効果的な始め方は、実際の業務課題から出発することです。

目的が明確な学習は記憶定着率が高く、モチベーションも維持しやすいのは間違いありません。

 

たとえば、毎週行っているデータ集計作業を自動化することを目標に設定し、必要な機能から順番に覚えていけば実践的なスキルがすぐに身につきます。

 

基本的な変数の使い方から始まり、ループ処理、条件分岐、配列など、段階的にレベルアップしていくことで、確実にVBAをマスターできます。

 

関連記事「VBA初心者必見!マクロの作り方」では、コードを書く画面の開き方や書いたコードの実行方法が図やサンプルコードを使って紹介されています。

 

マクロの開発を外注依頼する

業務内容に合わせた効率化マクロを導入したいけど、VBAコードを開発する時間がない。。。どうやってプログラムを組めばいいかわからない。。。

 

このような方は、マクロ開発を外注に依頼しちゃいましょう。

 

外注依頼することで本業に集中しながら高品質なマクロを即座に導入することができます。

 

ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。

開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、

費用が安い!スピード納期!!

でやらせてもらっています。

 

ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。

 

ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。

 

 

 

効率化マクロを導入してエクセル業務の効率をアップさせましょう。