Excelファイルのセル値を取得

概要

監視フォルダに格納されたExcelファイルからセルの値を取得してファイル名に付与します。

Excelのインストールは不要です。

この例では請求書から会社名、請求日、請求金額を取得してファイル名に付与します。

この帳票の場合、ファイル名は「20250420_株式会社A_11000.xls」となります。

請求日はyyyyMMddにフォーマットして、会社名の末尾のスペースと御中をカットして、請求金額は数字のみにする編集を行っています。

設定の前準備

C:\Homeの下に、以下のような構成でフォルダを作り、準備します。

フォルダ構成のダウンロード

Excelファイルのセル値を取得_フォルダ構成.zip

Cドライブのルートに解凍してください。

フォルダ構成は以下の通りです。

  • C:\Home\eDocArrangement2\Demo\Excelファイルのセル値を取得
    • 10_In
    • 20_Out
    • 30_Error
    • 90_System
      • 90_Log

設定ファイル

以下のリンクから完成した設定をダウンロードしていただくことができます。

設定ファイルのダウンロード

Excelファイルのセル値を取得_設定.zip

以下のフォルダに解凍すると設定が適用されます。

C:\Users\ユーザー名\AppData\Roaming\TechnoStyle\eDocArrangement2

グローバルデータ

グローバルデータとログの設定(共通設定)

グローバルデータの内容は以下の通りです。トップフォルダを変更する場合は、以下の定義を変更してください。グローバルデータは、「共通設定」から変更できます。

名前

値

TopFolder
C:\Home\eDocArrangement2\Demo\Excelファイルのセル値を取得

詳しい設定方法は、設定例(共通)グローバルデータとログの設定を参照して下さい。

ログ設定

名前

値

TopFolder
C:\Home\eDocArrangement2\Demo\Excelファイルのセル値を取得

実行ログファイル名

{%GET_G(TopFolder)}\90_System\90_Log\Log.txt

エラーログファイル名

{%GET_G(TopFolder)}\90_System\90_Log\ErrorLog.txt

文字コード

UTF-8

方式

追加書き込み (日単位)

バッチ設定

バッチ設定一覧
属性取得

ログ設定

共通ログ設定の内容でログを出力する。

  • ファイルの繰り返し1
    Loop File

メイン画面のファイルリストを対象に繰り返し処理を行う。

ループ毎にユーザーデータをクリアする。

  • Excel項目取得
    Macro Execute

以下のマクロを実行する。

#Excelファイルをオープン
{%EXCEL_OPEN_BOOK({%GET(FullPathFileName)})}

#請求日をyyyyMMddにフォーマット
{%SET_U(Format,1,セル,E7)}
{%SET_U(Format,1,フォーマット,yyyyMMdd)}

#請求金額を数字のみにフォーマット
{%SET_U(Format,2,セル,E21)}
{%SET_U(Format,2,フォーマット,0)}

#セル値を取得
{%EXCEL_GET_CELL_VALUES(Sheet1,B2|B5|E7|E21,,ExcelData,Format)}

{%SET_U(属性,帳票名,{%GET_U(ExcelData,1,1)})}

{%WRITE_LOG(帳票名:{%GET_U(属性,帳票名)})}

{%IF({%GET_U(属性,帳票名)}=御 請 求 書,
  {%SET_U(属性,会社名,{%GET_U(ExcelData,2,1)})}
  {%SET_U(属性,請求日,{%GET_U(ExcelData,3,1)})}
  {%SET_U(属性,請求金額,{%GET_U(ExcelData,4,1)})}

  #末尾の御中を削除
  {%SET_U(属性,会社名,{%REGEX_REPLACE({%GET_U(属性,会社名)},\s*御中$,)})}

  {%WRITE_LOG(会社名:{%GET_U(属性,会社名)})}
  {%WRITE_LOG(請求日:{%GET_U(属性,請求日)})}
  {%WRITE_LOG(請求金額:{%GET_U(属性,請求金額)})}
,)}

#クローズ
{%EXCEL_CLOSE_BOOK()}
  • 条件分岐1
    If

以下の条件を判定して処理を分岐する。

{%IF({%GET_U(属性,帳票名)}=御 請 求 書,True,False)}
  • 満たしている場合
    If Then
  • ファイル移動1
    Move File

文書を以下の通り移動する。

移動元

{%GET(FullPathFileName)}

移動先

{%GET_G(TopFolder)}\20_Out

ファイル名を「{%GET_U(属性,請求日)}_{%GET_U(属性,会社名)}_{%GET_U(属性,請求金額)}{%GET(Extension)}」に変更する。

移動先に同名の文書がある場合は、ファイル名に連番を付与する。

コピー後に削除を行う。

  • 満たしていない場合
    If Else
  • ファイル移動2
    Move File

文書を以下の通り移動する。

移動元

{%GET(FullPathFileName)}

移動先

{%GET_G(TopFolder)}\30_Error

移動先に同名の文書がある場合は、ファイル名に連番を付与する。

コピー後に削除を行う。

監視設定(eDocArrangement 2 Schedulerの設定)
スケジュール設定一覧

No. / 設定名

1 属性取得

実行対象

属性取得

監視フォルダ

{%GET_G(TopFolder)}\10_In

拡張子

*.xls;*.xlsx;

下位フォルダ

対象にしない

対象フォルダ(正規表現)


スケジュール

一定間隔 00:00:05

常時ログ出力

しない

オープンチェック

オープンチェックする。(3秒)

サイズチェック

しない

ファイル取得数制限

しない

実行条件

動作確認

以下の動画をご覧ください。