読者です 読者をやめる 読者になる 読者になる

スケジューラでの実行(corabo)

corabo 用の実行ファイル。

ExecXob.exe

前回記事で、Designer でのスケジューラ実行をご案内しましたが、今回は corabo 用のスケジューラ実行法を追ってみましょう。タスクスケジューラにバッチファイルを設定するのは共通ですが、バッチファイルに記載する内容が少々異なります。

f:id:xoblos:20170425171419p:plain

上図①が示しているのは、作成した業務ファイル(.xob)をバッチ起動する為のアプリケーション、「ExecXob.exe」の在り処になります。ドライブ以降のパスは、固定です。

次に②が示しているのは、作成した業務ファイル(.xob)の在り処になります。corabo が関わるので[xoBlosFileRoot]の下であるのは言うまでもありません。‥‥ここまでは Designer の時とほぼ変わりは無いですね。

最後に③が示しているのは、「セキュリティ例外設定」(下図)を参照する為のサイト名であり、スイッチ「/s:」で設定します。Designer の単独実行では必要とされなかった内容です。③の設定内容/corabo 上に作成したサイト名/下図の例外設定の「a.(必須)サイトフォルダ名」項は、いずれも同じ内容にする必要があります。

f:id:xoblos:20170425171433p:plain

Designer の単独実行で使われていた「xob.exe」と同様、「ExecXob.exe」 にも、作成した業務ファイル(.xob)の実行の際に、パラメータ値を渡すスイッチが用意されています。必要に応じて「/p:パラメータ名=値」を追記ください。

複数のデータ抽出

抽出ファイルに入力データの名前を持たせる。

以下の、計 3ブック中――計 6シートのデータを抽出対象としましょう。

f:id:xoblos:20170412100228p:plain

f:id:xoblos:20170412100234p:plain

data1.xlsx:「Sheet1」「Sheet2」「Sheet3」     
data2.xlsx:「Sheet1」
data3.xlsx:「Sheet999」「SortData

参照するブック名は、いずれも "data" 始まりなので、下図のように『2.入力設定』節の『a.ファイル名』項は「data*.xls*」とすれば、同階層に他ブックが存在したとしても影響なく複数対象とすることができます。(※ "xls*" は「.xls」や「.xlsm」形式が設置された時の保険としています。)『b.シート名』項は、全シートの参照を示すように「*」と設定しましょう。

f:id:xoblos:20170412103842p:plain

まとめたものを取り扱いたいので、『3.出力設定』節の『a.ファイル名』項に設定したものには、抽出対象の全データが入りそうな気はしますが――

f:id:xoblos:20170412100248p:plain

‥‥残念ながら、一番最後に参照されたブック「data.xlsx」の、シート「SortData」のデータしか取得できませんでした。『Excelから抽出』の手順は仕様上、複数のデータを対象とすることはできますが、参照情報をまとめることはできません。データをまとめる方法は、前回記事をご参照ください。

f:id:xoblos:20170412110010p:plain

上図、下部の赤枠にも説明文がありますが、xoBlos の予約値を使うことで、入力データの情報をそのままあて込むことができます。たとえブックとシートの数が 1:1 であったとしても、「%SHEET%」をいれておくと変更対応に強いです。

f:id:xoblos:20170412100305p:plain

また予め固定文言を付け加えておくと、後続処理で参照のし易さ/中間ファイルの管理/中間ファイルの上書き防止等の面で、より良いものとなるかもしれません。

f:id:xoblos:20170412100312p:plain

ワイルドカード「*」の取り扱いに慣れたら、今回例のブック「data3.xlsx」のシート「SortData」が抽出対象外とされた時、各項どのような設定をすれば良いのか考えてみましょう。共通している文言を見極め、設定してみてください!

フォルダの中のファイルリストを作成する(Designer)

特定のフォルダの中にあるファイル名のリストを作成する、フォルダの中のファイルリスト作成.xobという業務を作ってみましょう。下図のような位置にある、INPUTフォルダを対象にしてみます。

f:id:xoblos:20170409233258p:plain

INPUTフォルダの中には、5個のファイルと1個のサブフォルダがあります。

f:id:xoblos:20170409234830p:plain

もし、下図のように1行目に「ファイル名」という名前の項目名、2行目以降にファイル名のリスト形式にできれば、「手順の繰り返し実行の設定」で活用できそうです。この場合、資料 というサブフォルダ名はリストには必要ありません。

f:id:xoblos:20170409233356p:plain

xobファイルに設定する前に、まずコマンドプロンプトで検証してみます。dir INPUT というコマンドだけだと、余分な情報がたくさん表示されてしまいます。

f:id:xoblos:20170409233435p:plain

/B オプションを付けて、dir INPUT /B とすると、ファイル名の表示だけになりますが、まだ 資料 というサブフォルダ名(ディレクトリ名)が 余分です。/AD オプションでA(属性)がD(ディレクトリ)のものだけ、/A-D のようにして、D(ディレクトリ)以外のものだけにできます。

f:id:xoblos:20170409233500p:plain上記DIRコマンドの実行結果を、>(リダイレクト)でfilelist.csvいうファイルに書き込みます。出力結果を、typeコマンドで確認してみます。

f:id:xoblos:20170409233601p:plain

1行目を項目名にするには、最初にechoコマンドで "ファイル名" を書き込んでから、その後で >>(アペンド書き込み)で追加書き込みをします。これで良さそうですね。

f:id:xoblos:20170409233621p:plain

確定したコマンドを、flist.bat というファイルに書き込んで、xobファイルのあるフォルダに保存します。

f:id:xoblos:20170409233653p:plain

後は flist.bat を、xob業務の「外部アプリの実行」手順から呼ぶだけです。

f:id:xoblos:20170410010428p:plain

手順を実行すると、filelist.csvが作成されます。

f:id:xoblos:20170410011046p:plain

「外部アプリの実行」手順を作成する

Designerトップメニューの、[新しい手順]-[外部のアプリケーションを実行] を選択します。

f:id:xoblos:20170409083237p:plain

「外部アプリの実行」手順が作成されます。

f:id:xoblos:20170409083258p:plain

ヘルプへリンク

xoBlos Designer ヘルプ - 外部アプリの実行

f:id:xoblos:20170409083310p:plain

#S 記号(Spacer)で不要な箇所を削除する

SUM関数を使用した集計例(合計行の前に1行空行が入る)

【ひな形シート】

f:id:xoblos:20170331165621p:plain

B4のセルには、=SUM(B2:B3) という関数が入っています。

【制御シート】

f:id:xoblos:20170331165648p:plain

【出力結果】

f:id:xoblos:20170331165701p:plain

SUM関数を使用した集計例(合計行と明細行の間をくっつける)

【ひな形シート】

f:id:xoblos:20170331165747p:plain

【制御シート】

f:id:xoblos:20170331165802p:plain

【出力結果】

f:id:xoblos:20170331165818p:plain

ポイントは、ひな形シートに入れた #S 記号です。#S は、Spacerの意味合いで、処理後に削除する箇所に指定します。この例では、「大分類」という分類項目に指定しているので、処理後に行を削除することができます。

記号判定処理を施すため、制御シートの「整形対象部分の右下」キーワードも必要となります。

別の業務実行中のエラーメッセージ

「別の業務の実行」手順で、他のxobファイルを呼んで実行する場合、別の業務でのエラー内容がわからないときがあります。

f:id:xoblos:20170331130138p:plain

そのような場合は、Designerのトップメニュー [システム]-[ログフォルダを開く] から、xoBlosDesigner.logを開き、ログファイルでエラーメッセージを確認します。

f:id:xoblos:20170331130152p:plain

サーバーのコンピューター名を変更したときの留意点

SQL Serverのインストールも、xoBlos coraboのインストールも終り、既に運用中のシステムでのお話です。

既にxoBlos corabo運用中のシステムで、サーバーのコンピューター名を変更することは推奨いたしませんが、どうしても事情により コンピューター名を変更された場合の留意事項です。

xoBlos coraboの設定(configファイル設定)では、SQL Serverの接続設定を、localhost\sqlexpress または localhost とコンピューター名に依存しないように記述しているため、大勢に影響はありませんが、SQL Server全般のチューニングのため、下記の記事を参考にしてSQL Server設定を変更してください。

SQL Serverスタンドアロン インスタンスをホストするコンピューターの名前変更
https://msdn.microsoft.com/ja-jp/library/ms143799.aspx

xoBlos corabo本体の方では、ServerSettingWindow.exe での設定変更が必要となる場合があります。

xoBlosのインストールフォルダ下の、svcフォルダにある、ServerSettingWindow.exe をダブルクリックし、各サブシステムの詳細設定ダイアログで、サーバー名を新しいコンピューター名に変更して保存してください。

f:id:xoblos:20170328171624p:plain