見出し画像

VBAで書類作成を効率的に処理〜シートからシートへ転記〜

割引あり

VBAを使ってシートから別シートへテキストを転記したい!

こんな悩みを解決します。


このnoteで紹介している転記マクロを使えば、

一覧表シートの情報を基に決められた様式の編集を自動化

ことが可能です。


どのような処理が可能かというとこんな感じ

決められた様式で、会社名や氏名などの決めっている項目を編集する

という資料作成業務にうってつけのマクロになっています。


記事の最後では、サンプルとして紹介している転記VBAをダウンロードすることが可能です。

業務内容に合わせてアレンジしたり、コードをコピーしてお使いのエクセル二導入したり、いろんな使い方ができます。


エクセル作業の効率をアップさせたいという方は是非参考にしてみてください。


シートから別シートにテキストを転記するVBAとは

今回紹介する転記VBAを簡単に表現すると、

「シート1からシート2にテキストを転記する」

です。


言葉で説明するよりも動画の方が転記VBAがどのような処理をするかイメージしやすいと思います。


下記の動画では、

「設定」シートから「工事契約書」シートへ情報を転記する

という処理をサンプル事例としてご紹介しています。


転記VBAを導入すれば、多くの情報を一瞬で別シートに転記することができます。


転記VBAのメリット

転記VBAを導入することで得られるメリットがこちら

  • セルに入力した数式を消される心配がない

  • 過去の情報をすぐに出力できる

  • エクセルの編集が苦手な方でも操作が可能


転記VBAを導入することで、書類作成のスピードを格段にアップさせることが可能です。


特に決められた様式で氏名や会社名だけ編集して書類を作成するような作業に転記VBAの導入はめちゃくちゃ効果的。


サンプル事例として紹介している「工事契約書の作成」は、
実際に私が勤めていた職場でのエクセル業務と全く同じものです。

転記VBAを導入する前は、「書類作成に時間がかかる」「数式が壊される」「編集ミスが多い」という問題だらけでしたが、

転記VBAを導入することで問題を全て解決。


VBA導入後はエクセル操作が苦手な年配の方でもスイスイ書類を作成できるようになりました。


転記VBAの使い方

転記VBAがどれほど凄いのかイメージして頂くために、転記VBAの使い方をご紹介します。

自分の業務に当てはめながら確認してみてください。


1.一覧表シートに必要な項目を入力

画像1


2.一覧表シートのA列の工事番号を工事契約書のユーザーフォームに入力し、実行ボタンを押下

画像2

たったこれだけ。


実行すると一瞬で必要な項目が「工事契約書」シートに転記されます。


過去に作成した書類を出力したい!というときは、

工事番号を変更し実行ボタンを押下するだけ。


昔のエクセルファイルを探しだす!なんて手間は必要ありません。

使い方によってエクセル業務の効率を格段にアップさせることが可能です。


転記VBAの導入方法

画像4

転記VBAの導入方法の解説の前に、転記VBAに使われているメインのVBAについて説明をしていきます。


転記VBAで使われている最も重要なVBAが、シート名の取得するVBAです。


シート名を取得しシートを区別しなければ、情報を別シートに転記することはできません


シート名を取得するVBAの基本構造がこちら

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


シート名の取得を行ったあとは、

シート名.セルの場所 = シート名.セルの場所

というようにコードを書いていきます。


「VBAでシート名を取得方法」については下記の記事を参考にしてください。


サンプル事例として紹介している「工事契約書の作成」を使って、

VBAの導入方法をご紹介します。


1.VBAを開く

2.コードを記入


3.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


4.ユーザーフォームの作成


5.フォームを作成


6.ユーザーフォームにコードを設定


7.コマンドボタンに設定するコード

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


8.ユーザーフォームを表示するコードの設定


9.シートに設定するコード

Private Sub WorkSheet_Activate()
UserForm1.Show vbModeless
End Sub


以上で転記VBAの導入は完了です。


今回は、ユーザーフォームを使ってVBAを実行するという方法を採用しているので導入が少し複雑になっていますが是非挑戦してみてください。


転記VBAの解説

転記VBAで使われている「シートを区別するVBA」について詳しく解説していきます。


シートを区別する部分のコードがこちら

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

「Ash」・・・一覧表シート
「Bsh」・・・工事契約書シート

となります。


これでシートの区別は完了です。


シートの区別設定をしたあとは、ひたすら転記するコードを書いていきます。

Bsh.Range("H6") = Ash.Cells(i + 2, 2)


これは、

「工事契約書シート」のH6セルに「一覧表シート」の該当行、2列目のテキストを転記する

という内容です。


「i+2」はユーザーフォームのテキストボックスの値を変数iに格納させて利用しています。


転記VBAを設定するためには


上記で、転記VBAのコードをそのまま掲載しているのでコピペして自身のエクセルでお使いいただくことは可能です。

ですが、

VBAを全く扱ったことがない方がいきなりコードをコピペして編集することは難易度高めだと思います。


特に、転記VBAはユーザーフォームのテキストボックスの値を変数として取得しているので、VBA初心者には結構難しい作業になってしまう。


「VBAってプログラミングでしょ?私には無理だ。。」

なんて思った方がほとんどではないでしょうか。


でも安心してください。


このnoteで紹介している転記VBAは、

プログラミング未経験の私が本格的にVBA学習を初めて2週間程度の時期

に作成したものです。


VBAは基礎を身に付けるだけでいろんなことができるようになるプログラミングです。


大事なことはVBAを使って何をしたいのか明確なビジョンを持つこと!


「あんなことがしたい!」「こんな処理を自動化したい!」という想いを持ちながら勉強することで、数日で仕事に役立つマクロを作成することができるようになります。


実際に私がそうでした!!


「VBAに興味がある!」「エクセル業務の効率をアップさせたい!」と考えている方はVBA学習に関する情報を発信しているメルマガを参考にしてみてください。

メルマガ登録はこちら


プログラミング素人の私がたくさんの効率化マクロを開発できるようになった経験談や耳より情報を発信しています。

メルマガの登録は無料なのでお得に情報をゲットしてくださいね。


それでも転記VBAの導入に苦戦している方は。。


VBAは勉強のやりやすいプログラミングなので、勉強して自分で導入することがおすすめ!

だけど、

誰もが簡単に転記VBAを導入できるわけではありません。


以下のような理由でVBAの導入に苦戦している方が多いのではないでしょうか。

  • やり方を確認したけど導入方法がわからない

  • 本業が忙しくてVBAを導入する時間がない

  • そもそもプログラミングは苦手


こんな方はマメBlogのマクロ開発依頼サービスをご利用ください。

業務内容に合わせた処理にアレンジをして「転記VBA」をご提供しています。

マメBlogマクロ開発の特徴

  • 安価

  • 業務内容に合わせた柔軟なマクロ開発

  • スピード納入

マメBlogを運営している私自ら、「業務内容の聞き取り」「マクロ開発」「見積作成」「納入」を行っているので上記のような特徴になっています。

マクロによるエクセル業務の効率化に少しでも興味のある方は、お気軽にマメBlogへご相談ください。


>>> マメBlogのマクロの開発依頼はこちら


工事契約書に設定された転記VBAのダウンロード


サンプル事例としてご紹介している「転記VBA」が設定されたエクセルファイルをダウンロードしてお使い頂くことが可能です。

様式やコードを編集して業務内容に合わせた転記VBAに改修してお使いください。

ここから先は

107字 / 1ファイル

この記事が気に入ったらサポートをしてみませんか?