「Excel」アクションでは、セル参照の番地「A1」「B4」やセルの位置(1,1), (2,4)によるセルの指定だけではなく、ユーザーが名前定義したセルやセルの範囲を指定することも可能です。
※なお、下記で紹介する名前定義したセルの利用は「Excel」アクションのみ利用可能であり、「OpenDocumentスプレッドシート」アクションでは利用できませんのでご注意ください。
Excelでは、任意のセルや任意の範囲のセルに対して名前定義が可能になっております。
任意のセルや任意の範囲のセルを選択したのち、図1の赤枠部分に任意の名前を設定できます。
[図1:A15 ~ Y23セルに名前「明細」を設定]
このようにしてセルに設定された名前は、前の行にセルや行を追加されて場所が変化しても、変化に追従して参照します。
[図2:行・列を名前設定を行ったセル範囲の前に追加]
[図4:名前「明細」で検索すると変化に合わせて追従している]
こちらを使用すれば、ユーザーがExcelのフォーマットを変えてしまい位置ずれを起こしてしまった場合であっても、セル名さえ変化しなければ追従してデータの取得や書込みを目的のセルに対して行うことが可能になります。
■取得対象の名前付きセルが単一セルの場合
こちらの場合は、「セル参照」にそのまま定義した名前を指定すれば取得できます。
(一例)
<AMVARIABLE NAME="var1" VALUE="" />
<AMEXCEL ACTIVITY="get_cell" WORKBOOK="%GetDesktopDirectory()%\注文書.xlsx" VISIBLE="NO" SAVETYPE="do_not_save" RESULTVARIABLE="var1" CELLREF="受注NO" />
■取得対象の名前付きセルが範囲セルの場合
名前定義した範囲をそのまま指定してデータセットには出来ない為、「セルの選択」→「選択セルの場所の取得」→「セルの取得」の順序を踏む必要があります。
(一例)
<AMVARIABLE NAME="var1" VALUE="" />
<AMVARIABLE NAME="var2" VALUE="" />
<AMEXCEL SESSION="ExcelSession1" WORKBOOK="%GetDesktopDirectory()%\注文書.xlsx" />
<AMEXCEL ACTIVITY="activate_cell" SESSION="ExcelSession1" CELLREF="明細" />
<AMEXCEL ACTIVITY="active_cell" SESSION="ExcelSession1" ACTION="rangebyreference" UPPERLEFTREFVARIABLE="var1" LOWERRIGHTREFVARIABLE="var2" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" ACTION="rangebyreference" RESULTDATASET="ds_Excel" STARTCELLREF="%var1%" ENDCELLREF="%var2%" />
<AMEXCEL ACTIVITY="close_workbook" SESSION="ExcelSession1" SAVETYPE="do_not_save" />