WinActor

2020.11.30
サンプルシナリオ Access関連
Excelから取得したデータをAccessのフォームに転記するサンプルシナリオ

Access操作関連ライブラリを使用して、Excelファイルからデータを取得し、Accessファイルのフォームにデータの転記を行うサンプルシナリオになります。

Accessのシステムを操作するシナリオ作成の学習に利用できます。

本コンテンツをダウンロードする前にこちらの利用条件を必ずご確認いただき、内容に同意をしたうえでダウンロードしてください。 また、"コンテンツの利用条件"は下のボタンからダウンロードし、お手元で保管してください。

サンプルシナリオ概要

はじめに

Access操作関連ライブラリを使用して、Excelファイルからデータを取得し、Accessファイルのフォームにデータの転記を行うサンプルシナリオ(以降、本サンプルシナリオ)について説明します。

本サンプルシナリオの概要

本サンプルシナリオは、以下の処理を行います。

  • Excelファイル内から取得した値を、Accessファイル内の連結フォームに入力します。
  • 入力されたデータ(レコード)をデータベース(Accessファイル内のテーブル)に書き込みます。
  • 入力済のExcelファイルを作業済Excelファイル格納フォルダに移動します。
  • Accessフォームとファイルを閉じ、Accessを終了します。

使用するWinActorモジュール

本サンプルシナリオでは、以下のWinActorモジュールを使用します。

  • ノード/変数/カウントアップ
  • 13_ファイル関連/02_ファイル操作/ファイル移動.ums6
  • 13_ファイル関連/04_ファイル一覧/先頭ファイルの取得.ums6
  • 18_Excel関連/Excel操作(値の取得).ums6
  • 18_Excel関連/Excel操作(値の取得2).ums6
  • 18_Excel関連/01_ファイル操作/Excel操作(保存なしで閉じる).ums6
  • プチライブラリ/Accessファイルを開くライブラリ
  • プチライブラリ/Access操作(フォームを保存なしで閉じる)
  • プチライブラリ/Accessファイルのフォームを開くライブラリ
  • プチライブラリ/Access操作(フォームを保存なしで閉じる)
  • プチライブラリ/Access操作(フォームのオプショングループで指定の値を選択)
  • プチライブラリ/Access操作(フォームのコマンドボタンでEnterを押下)
  • プチライブラリ/Accessファイルのフォームでコンボボックスの指定の値を設定するライブラリ
  • プチライブラリ/Access操作(フォームのテキストボックスに値を設定)
  • プチライブラリ/Accessファイルのフォームで新規レコードへ移動するライブラリ
  • プチライブラリ/Accessファイルのサブフォームで新規レコードへ移動するライブラリ
  • プチライブラリ/Accessファイルのフォームのレコードを更新するライブラリ
    (プチライブラリはこちらからダウンロード可能です。)

本サンプルシナリオで使用するファイル

本サンプルシナリオで使用するAccessファイルについて
Accessファイル「サンプルDBファイル.accdb」(以降、Accessファイル)には以下のオブジェクトがあります。

  • テーブル
    • T_試供品持出申請
    • T_試供品持出申請明細
    • T_従業員マスタ
    • T_試供品マスタ
  • フォーム
    • F_メニュー(非連結フォーム) (以降、メニューフォーム)
    • F_試供品持出申請_メインフォーム(連結フォーム、親子フォーム 親)(以降、メインフォーム)
    • F_試供品持出申請明細_サブフォーム(連結フォーム、親子フォーム 子)(以降、サブフォーム)

サブフォームは、メインフォームに配置されたサブフォームコントロールから操作します。
メインフォームに入力された値(申請ID、申請日、従業員ID、配布場所)は、テーブル「T_試供品持出申請」に書き込まれます。(「氏名」は、テーブル「T_従業員マスタ」から取得しています。)
サブフォームに入力された値(明細ID(オートナンバー)、品コード、数量)は、テーブル「T_試供品持出申請明細」に書き込まれます。(品名はテーブル「T_試供品マスタ」から取得しています。)
Accessファイルにはマクロ(コマンドボタンクリック時イベントプロシージャ)が含まれています。

本サンプルシナリオで使用するExcelファイルについて
フォームに入力するデータはExcelファイル(「サンプル申請書_yyyymmdd.xlsx」(以降、申請書ファイル))に記載されているものとします。このファイルはフォルダ「未作業申請書」(以降、未作業フォルダ)内に格納されているものとします。
未作業フォルダ内には申請書ファイル以外のファイルは存在しないものとします。
申請書ファイル内に記載されたデータはすべて正しく入力されているものとします。
申請書ファイルのシート「申請書」の2~6行目を、メインフォームに入力するデータ(以降、申請データ)、10行目以降をサブフォームに入力するデータ(以降、明細データ)とします。
申請書ファイルの明細データの最終行は、「品コード」の値有無で判定します。「品コード」列の10行目から下方向に値取得し、最初に空白となった行の1行前をデータ最終行とします。(途中に空白セルが存在した場合、その前の行をデータ最終行と判断します。)

動作確認環境

本サンプルシナリオは以下の環境で動作確認しています。

  • Windows 10
  • WinActor 6.3.0、7.1.0
  • Microsoft 365

本サンプルシナリオの使い方

本サンプルシナリオの実施方法は以下の通りです。

Step1.サンプルシナリオの読み込み

ダウンロードしたZIPファイルを展開し、展開したフォルダに含まれている本サンプルシナリオをWinActorで読み込みます。

Step2.Accessファイル「コンテンツの有効化」を行う

Accessファイルにはマクロが含まれているので「コンテンツの有効化」を行います。

Step3.(必須) 動作に必要な変数を設定

本サンプルシナリオを実行するために必要な値を、変数一覧で更新します。
事前の設定が必須な変数は下記のとおりです。(実線赤枠内)

  • Folder_申請書(未作業)
     データを取得するExcelファイルを格納したフォルダパスを指定します。
      例) 申請書(未作業)

  • Folder_作業済申請書
     処理が完了したExcelファイルを格納するフォルダパスを指定します。
      例) 作業済申請書

11460_input1.png
(必須) 動作に必要な変数を設定

Step4.(任意) 動作に必要な変数を変更

変数一覧グループ名「申請書」内の変数
本サンプルシナリオでは「申請書ファイル」を使用する前提でシート名及び各セル・行・列番号を指定しています。違う形式のデータを使用する場合は適宜変更してください。

  • Sheet_申請書
    データのあるシートの名前を指定します。(指定がない場合はアクティブシートになります。)

  • Cell_申請日、Cell_申請ID、Cell_従業員ID、Cell_配布場所
    各データの記載場所のセル番地を指定します。(A1形式)

  • Column_品コード、Column_数量
    各データ(フィールド)の列番号を指定します。(A1形式)

  • Row_明細行
    明細データの開始行の行番号を指定します。

11460_input2.png
(任意)動作に必要な変数を変更


変数一覧グループ名「Accessファイル」内の変数
本サンプルシナリオでは「サンプルDBファイル.accdb」を使用する前提で各値を指定しています。違う形式のファイルを使用する場合は適宜変更してください。

  • Accessファイル
    Accessファイルの名前を指定します。

  • メニューフォーム
    メニューフォームの名前を指定します。

  • メインフォーム
    入力時に開くメインフォームの名前を指定します。

  • サブフォーム
    メインフォーム内に置かれたサブフォームコントロール名を指定します。

  • txb_申請ID、txb_申請日、cbx_従業員ID、cbx_配布場所
    メインフォーム上の値設置対象となる各コントロールの名前を指定します。
    txbはテキストボックス、cbxはコンボボックスを表します。

  • cbx_品コード、txb_数量
    サブフォーム上の値設置対象となる各コントロールの名前を指定します。

  • cmbtn_フォーム開く
    メニューフォーム上のコマンドボタンの名前を指定します。

  • opg_オプショングループ
    メニューフォーム上のオプショングループの名前を指定します。

  • opv_オプション値1
    メニューフォーム上のオプショングループに設定する値を指定します。

11460_input3.png
(任意)動作に必要な変数を変更

Step5.サンプルシナリオの実行

WinActorで本サンプルシナリオを実行開始します。
各ExcelファイルのデータをAccessファイルへ書き込み、Accessファイルを閉じて本サンプルシナリオは終了します。

Step6.サンプルシナリオの終了後の確認

各Excelファイルのデータが入力したフォームに連結するテーブルに書き込まれていることを確認してください。
(T_試供品持出申請とT_試供品持出申請明細にデータが追加されます。)

トラブルシューティング

本サンプルシナリオの変数が正しく指定されなかった場合、エラーメッセージが出力されます。
詳細については、エラーメッセージ一覧を参照してください。
本サンプルシナリオで使用するAccessファイルのコンテンツの有効化がされていなかった場合、マクロが実行されません。

サンプルシナリオ解説

本サンプルシナリオで使用している実装テクニックについて説明します。

本サンプルシナリオの流れ

本サンプルシナリオは以下の順で動作します。

【1】Accessファイルを開く
【2】Accessフォームを開く
【3】申請書ファイルから取得したデータをAccessフォームに入力
【4】Accessファイルを閉じ、Access(アプリ)を終了

11460_input4.png

シナリオフロー全体

【1】Accessファイルを開く

Accessファイルを開きます。

11460_input5.png

Accessファイルを開く

【2】Accessフォームを開く

データを入力するフォームは、メニューフォームのコマンドボタンをクリック(Enterキー押下)して開きます。
(1) メニューフォームを開く
 遷移先フォーム選択用オプショングループと、遷移用コマンドボタンが配置されています。

(2) 入力フォーム(メインフォーム)を開く
 メニューフォーム内のコマンドボタンを押下すると、メインフォームが開きます。

    1. メニューフォームのオプショングループに値を設定し、F_試供品持出申請入力_メインフォーム(以下メインフォーム)を指定するオプションボタンを“On”にします。
    2. 遷移用コマンドボタンにフォーカスし、Enterキーを押下します。

11460_input6.png

メニューフォームのコントロール

【3】 申請書ファイルから取得したデータをAccessフォームに入力

申請書ファイルから取得したデータを、フォームの各コントロールに入力します。

申請書ファイル及びデータ取得の繰り返しについて
メインフォームへの入力は、申請書ファイルの個数分繰り返します。(メインフロー内後判定繰返グループ「全ての申請書ファイル分繰り返す」)
未作業フォルダ内の先頭ファイルを順次取得し、フォームへ入力、入力済申請書はフォルダ「作業済申請書」(以降、作業済フォルダ)に移動させます。フォルダ内にファイルがなければ、分岐により繰り返しを終了します。

11460_input7.png

メイン内繰り返しループ



サブフォームへの入力は、申請書データファイル毎に明細行数分繰り返します。(サブルーチン「(3)サブフォームにデータ入力」内後判定繰り返しグループ「明細行数分繰り返す」)
申請書ファイルの明細データ行を順次読み取り、サブフォームへ入力します。
データの有無は「品コード」欄の値有無で判定します。この値が空白になれば分岐により繰り返しを終了します。

11460_input8.png

サブルーチン「(3)サブフォームにデータ入力」内繰り返しループ




(1) 作業対象の申請書ファイル取得
 申請書フォルダ内の先頭ファイルを取得します。

(2) サブルーチングループ「メインフォームにデータ入力」
 メインフォームに申請書ファイルの申請データ各値を設置します。

  1. メインフォーム用の申請書ファイルデータを取得、変数に格納します。
  2. メインフォームの新規レコードに移動します。
    メインフォームの入力は、新規レコードから行います。
  3. 各値をメインフォーム上のコントロールに設置します。
  4. メインフォームを更新し、フォームに入力されたデータ(レコード)を連結するテーブルに書き込みます。
    (サブフォームのデータ(“子レコード”)が紐づく“親レコード”を作ります。)

11460_input9.png

サブルーチン「(2)メインフォームにデータ入力」



11460_input10.png


申請書ファイルと入力フォーム



11460_input11.png

メインフォームとサブフォームのコントロール



(3) サブルーチングループ「サブフォームにデータ入力」
 サブフォームに申請書ファイルの明細データ各値を設置します。
 入力後、明細データ行を1進めて、繰り返しループの始点に戻ります。

  1. サブフォーム用の申請書ファイルの明細データを取得、変数に格納します。
  2. サブフォームの各コントロールに値設置します。
  3. サブフォームの新規レコードに移動します。

11460_input12.png

サブルーチン「(3)サブフォームにデータ入力」

(4) 入力済申請書を作業済フォルダへ移動
 入力の終わった申請書ファイルを保存せずに閉じ、作業済みフォルダへ移動します。

【4】 Accessファイルを閉じ、Access(アプリ)を終了

  1. フォーム(メインフォーム及びメニューフォーム)を閉じます。
  2. Accessファイルを閉じAccessを終了します。

11460_input13.png

Access終了

【参考】本サンプルシナリオの再利用について

本サンプルシナリオを再利用する際は、作業対象とするファイルに応じてファイル名やフォーム名等変更の他、Accessの各オブジェクト及びコントロールの設定をご確認の上、各ライブラリのプロパティ設定を変更してご使用ください。

(1) オプショングループについて
 (シナリオ内使用箇所【2】Accessフォームを開く-(2).1)

  • オプショングループ内のオプションボタンの選択は、各ボタンに割り当てられたオプション値を指定して行っています。
  • 使用するAccessファイルの各オプションボタンのプロパティから、それぞれのボタンに割り当てられているオプション値をご確認ください。
  • ライブラリのプロパティ「設定値」に、該当するオプション値を指定してください。
  • オプショングループ内のコントロールがチェックボックス、トグルボタンの場合も同様です。


(2) コマンドボタンについて
 (シナリオ内使用箇所【2】Accessフォームを開く-(2).2)

  • サンプルDBでは、コマンドボタン「cmbtn_フォーム開く」に、クリック時イベントプロシージャ(このコマンドボタンをクリックすると、オプショングループ内のオプションボタンで選択されたフォームが開かれる)を割り当てています。
  • 操作対象とするコマンドボタン上でのEnterキー押下により、どのイベントプロシージャが動作するかは、使用するAccessファイルの各コマンドボタンのプロパティをご確認ください。
  • ライブラリのプロパティ「ウィンドウ識別名」は、使用するAccessファイルに応じて変更してください。


(3) サブフォームの指定について
 (シナリオ内使用箇所【3】 申請書ファイルから取得したデータをAccessフォームに入力-(3).2,3)

  • ライブラリのプロパティにてサブフォームを指定する際は、フォーム名ではなく、「サブフォームコントロール」の名前を指定してください。 (ライブラリの注釈に記載の通り)


(4) テキストボックス、コンボボックスについて
 (シナリオ内使用箇所【3】 申請書ファイルから取得したデータをAccessフォームに入力-(2).3、(3).2)

  • テキストボックス、コンボボックスは、使用するAccessファイルの各プロパティを確認し、ライブラリのプロパティ「コントロール名」で名前を変更してご使用ください。



変更履歴

版数 日付 修正内容
版数
1.0版
日付
2020/11/30
修正内容
初版
版数
1.1版
日付
2024/1/16
修正内容
・注意事項を削除
・ファイル名を「SS2011_11460_AccessOperation_GetDataFromExcel_1.0.1.zip」に変更

本コンテンツをダウンロードする前にこちらの利用条件を必ずご確認いただき、内容に同意をしたうえでダウンロードしてください。 また、"コンテンツの利用条件"は下のボタンからダウンロードし、お手元で保管してください。

"Access関連"に関連するその他のサンプルシナリオ

サンプルシナリオ一覧へ戻る
当サイトでは、お客さまに最適なユーザー体験をご提供するためにCookieを使用しています。当サイトをご利用いただくことにより、お客さまがCookieの使用に同意されたものとみなします。詳細は、「プライバシーポリシー」をご確認ください。