連番を取得してアノテーション貼り付けを行う方法

概要

eDocArrangementのマクロでは、ユーザデータと呼ばれる変数や、ユーザデータをテキストファイルに読み書きするマクロ、計算を行うマクロが用意されています。

これらのマクロを組み合わせることで連番の管理が可能です。また、テキストファイルに日付や時刻を記録することで、任意のタイミングでリセットすることも可能です。ファイルを複数使用すれば、複数の連番を管理することもできます。

この例では以下のフォルダ構成で処理を行っています。

「10_連番付与」フォルダを監視して、連番を貼り付け「20_処理済」フォルダに移動します。 「99_ログ」フォルダにログが出力されます。 「90_System」フォルダに「連番管理.txt」を作成して連番を管理します。

以下から設定ファイルをダウンロードできます。

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

eDocArrangement.zip

設定

設定は、eDocArrangementのメニュー > ツール > 処理設定から行うことができます。 (ここでは、ポイントとなる部分を説明しますが、詳細はヘルプファイルを参照してください。)

監視設定

最初は、設定一覧に何も表示されていません。左下の新規ボタンから設定を追加します。監視設定では以下の様に設定します。

監視フォルダには、「{%GET_GLOBAL_DATA(TopFolder)}」というマクロが使用されています。

これはグローバルデータで「TopFolder」に「C:\Home\sample\03」を定義してあるので、処理の実行時に「C:\Home\sample\03」と置換されます。

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

連番取得

次に、右上の処理名から、「マクロ実行」を選択して、処理追加ボタンを押します。

ここでは、連番管理ファイルから番号を取得し、カウントアップ後に連番管理ファイルに保存するマクロを実行します。

マクロ欄に以下のマクロを記述します。(上図は全て表示できず右の方が隠れています)

#読み込み
{%IF({%EXISTS_FILE({%GET_GLOBAL_DATA(TopFolder)}\90_System\連番管理.txt)}=True,
  {%LOAD_USER_DATA({%GET_GLOBAL_DATA(TopFolder)}\90_System\連番管理.txt,連番,Leave)}
,
  {%SET_USER_DATA(連番,番号,0)}
  {%SET_USER_DATA(連番,日付,{%DATE(yyyymmdd)})}
)}
#--
#リセットとカウントアップ
{%IF({%GET_USER_DATA(連番,日付)}={%DATE(yyyymmdd)},
  {%SET_USER_DATA(連番,番号,{%CALC({%GET_USER_DATA(連番,番号)}+1)})}
,
  {%SET_USER_DATA(連番,番号,1)}
  {%SET_USER_DATA(連番,日付,{%DATE(yyyymmdd)})}
)}
#保存
{%CREATE_FOLDER({%GET_GLOBAL_DATA(TopFolder)}\90_System)}
{%SAVE_USER_DATA({%GET_GLOBAL_DATA(TopFolder)}\90_System\連番管理.txt,連番)}

このマクロを順に解説します。

最初に連番管理ファイルの存在チェックを行っています。ファイルが存在する場合「連番管理.txt」をLOAD_USER_DATAマクロで読み込みます。

ファイルが存在しない場合は、ユーザデータ「番号」に0をセット、「日付」に現在の日時をセットします。

#読み込み
{%IF({%EXISTS_FILE({%GET_GLOBAL_DATA(TopFolder)}\90_System\連番管理.txt)}=True,
  {%LOAD_USER_DATA({%GET_GLOBAL_DATA(TopFolder)}\90_System\連番管理.txt,連番,Leave)}
,
  {%SET_USER_DATA(連番,番号,0)}
  {%SET_USER_DATA(連番,日付,{%DATE(yyyymmdd)})}
)}

「#--」については、マクロを分割するために必要です。詳しくは、ヘルプの共通マクロ書式の「マクロの処理方式と分割について」を参照願います。

次にユーザデータの日付と現在日付を比較して、違っていたら連番をリセットし、同じであれば番号をカウントアップします。

#リセットとカウントアップ
{%IF({%GET_USER_DATA(連番,日付)}={%DATE(yyyymmdd)},
  {%SET_USER_DATA(連番,番号,{%CALC({%GET_USER_DATA(連番,番号)}+1)})}
,
  {%SET_USER_DATA(連番,番号,1)}
  {%SET_USER_DATA(連番,日付,{%DATE(yyyymmdd)})}
)}

リセットは番号に1をセットする処理と、現在の日付をセットする処理を行っています。

最後にフォルダの作成と、ユーザデータを「連番管理.txt」に保存します。(既にフォルダがある場合でもエラーにはなりません。)

#保存
{%CREATE_FOLDER({%GET_GLOBAL_DATA(TopFolder)}\90_System)}
{%SAVE_USER_DATA({%GET_GLOBAL_DATA(TopFolder)}\90_System\連番管理.txt,連番)}

貼り付け

アノテーションの貼り付けでは、貼り付けるアノテーションの位置を取得するため、XDW文書からアノテーションの位置や文字サイズなどをインポートする手法で設定を行います。

貼り付け位置にテキストアノテーションを配置したXDW文書を用意します。アノテーションはフォントサイズやカラーなどもインポートする情報に含まれます。

右上の処理名から、「マクロ実行」を選択して、処理追加ボタンを押します。

マクロ実行の画面でアノテーションインポートボタンを押します。以下のような画面が表示されますので、先ほど用意したインポート用のXDW文書を指定します。

以下の様なアノテーション貼り付けマクロが生成されます。

{%DW_GET_PAGE_INFORMATION({%PAGE_NO})}
#Import
{%SET_USER_DATA(FontSet1,FontSize,20)}
{%SET_USER_DATA(FontSet1,ForeColor,黒)}
{%SET_USER_DATA(FontSet1,BackColor,なし)}
{%SET_USER_DATA(FontSet1,FontName,MS ゴシック)}
{%DW_PASTE_TEXT_ANNOTATION({%PAGE_NO},0000,17801,1281,FontSet1)}

赤字の部分はインポート用のXDW文書に貼り付けた「0000」という文字ですので、この部分を以下のように連番を保存したユーザデータに書き換えします。

{%DW_GET_PAGE_INFORMATION({%PAGE_NO})}
#Import
{%SET_USER_DATA(FontSet1,FontSize,20)}
{%SET_USER_DATA(FontSet1,ForeColor,黒)}
{%SET_USER_DATA(FontSet1,BackColor,なし)}
{%SET_USER_DATA(FontSet1,FontName,MS ゴシック)}
{%DW_PASTE_TEXT_ANNOTATION({%PAGE_NO},{%FORMAT({%GET_USER_DATA(連番,番号)},0000)},17801,1281,FontSet1)}

文書移動

最後に文書移動を行います。ファイル名は取得した連番にリネームしています。

実行

フォルダの自動監視は、eDocArrangementのメニュー > 実行 > フォルダ監視を行うで、監視モードになります。

「10_連番付与」フォルダに文書を配置すると、連番を貼り付け「20_処理済」フォルダに移動されてきます。

ファイルを開いて確認すると連番が貼り付けられています。