同じExcelファイルが多重起動することを防止する方法を解説します。例えば、下図のように「店舗マスタ.xlsx」がすでに起動していてたら、「店舗マスタ.xlsx」が起動しないようにします。
フロー図で表すと下図のようなイメージです。「店舗マスタ.xlsx」が起動しているかどうかチェックして、起動していなかったときだけ「店舗マスタ.xlsx」を起動し、後続の処理を行います。
そうそう。このフローを作る方法がわからないんだ。
ちょっと考え方を変えるだけでできるよ。
実際にフローを作ってみよう!
Excelファイルの多重起動を防止する方法
Excelファイルの多重起動を防止するには、「店舗マスタ.xlsx」が起動しているかどうかチェックする必要はありません。「店舗マスタ.xlsx」に接続してみてエラーが発生したら、「店舗マスタ.xlsxが起動していない」と判断できるので、起動すればいいというだけです。
なんとなくわかったけど、具体的な方法がわかんないな。
じゃ、実際に作ってみようか!
Excelファイルの多重起動を防止するフローを作成しよう
準備しよう
「店舗マスタ.xlsx」を「ドキュメントフォルダー\PAD\Data」というフォルダーの中に保存してください。「店舗マスタ.xlsx」は以下のボタンから入手できます。「PAD」「Data」というフォルダーが無い場合は作成してください。
“店舗マスタ.xlsx” をダウンロード 店舗マスタ.xlsx – 404 回のダウンロード – 10.29 KB「ドキュメントフォルダー\PAD\Data\店舗マスタ.xlsx」というように配置されていることを確認してください。保存できたら、「店舗マスタ.xlsx」を起動して、Excelで開いた状態にしてください。
フローを作成しよう
STEP1 [実行中のExcelに添付]アクションを追加する
アクションペインの[Excel]アクショングループをクリックし❶、[実行中のExcelに添付]アクションをワークスペースに追加してください❷。
STEP2 [実行中のExcelに添付]アクションを設定する
[実行中のExcelに添付]ダイアログが表示されます。[ドキュメント名]の下矢印をクリックして❶、ドロップダウンリストの中の[店舗マスタ.xlsx]をクリックしてください❷。[保存]をクリックしてください❸。
STEP3 [Excelワークシートから読み取る]アクションを追加する
[Excelワークシートから読み取る]アクションを[実行中のExcelに添付]アクションの後に追加してください❶。
STEP4 [Excelワークシートから読み取る]アクションを設定する
[Excelワークシートから読み取る]ダイアログが表示されます。[取得]は[単一セルの値]のままとし、[先頭列]に「C」と入力してください❶。[先頭行]に「5」と入力して❷、[保存]をクリックしてください❸。
STEP5 サブフロー[Catch]を作成する
「Catch」という名前のサブフローを作成します。[サブフロー]をクリックして❶、[新しいサブフロー]をクリックしてください❷。[サブフローの追加]ダイアログが表示されます。[サブフロー名]に「Catch」と入力し❸、[保存]をクリックしてください❹。
「Catch」というサブフローが追加されたね
STEP6 [特別なフォルダーを取得]アクションを追加する
アクションペインの[フォルダー]アクショングループをクリックし❶、[特別なフォルダーを取得]アクションをサブフロー[Catch]のワークスペースに追加してください❷。
STEP7 [特別なフォルダーを取得]アクションを設定する
[特別なフォルダーを取得]ダイアログが表示されます。[特別なフォルダーの名前]のドロップダウンリストをクリックし[ドキュメント]を選択してください❶。[特別なフォルダーのパス]にドキュメントパスが表示されます。このフォルダー名は環境によって異なります。「準備しよう」で「店舗マスタ.xlsx」を保存したドキュメントフォルダーと同じパスであることが大事です。確認出来たら、[保存]をクリックしてください❷。
STEP8 [Excelの起動]アクションを設定する
アクションペインの[Excel]アクショングループをクリックし❶、[Excelの起動]アクションを[特別なフォルダーを取得]アクションの後に追加してください❷。
STEP9 [Excelの起動]アクションを設定する
[Excelの起動]ダイアログが表示されます。[Excelの起動]のドロップダウンリストをクリックし[次のドキュメントを開く]を選択してください❶。[ドキュメントパス]に「%SpecialFolderPath%\PAD\Data\店舗マスタ.xlsx」と入力してください❷。
[生成された変数]をクリックしてください❸。変数名が[ExcelInstance2]となっているので、これを[ExcelInstance]に変更してください❹。[保存]をクリックしてください❺。
これでサブフロー[Catch]のフロー作成が完成!
STEP10 [実行中のExcelに添付]ダイアログを表示する
[Main]フローをクリックしてください❶。[Main]フローが表示されます。[実行中のExcelに添付]アクションをダブルクリックしてください❷。
STEP11 [実行中のExcelに添付]アクションのエラー設定を行う
[実行中のExcelに添付]ダイアログが表示されるので、[エラー発生時]をクリックしてください❶。
[エラー発生時]画面が表示されます。[詳細]をクリックしてください❷。
[指定されたExcelドキュメントが見つかりません]の[新しいルール]をクリックしてください❸。表示されたメニューの[サブフローの実行]をクリックしてください❹。
[指定されたExcelドキュメントが見つかりません]の下に[サブフローの実行]が表示されるので、ドロップダウンリストをクリックして、表示される[Catch]をクリックしてください❺。
[サブフローの実行]に[Catch]が指定されていることを確認し、[フロー実行を続行する]をクリックしてください❻。[例外処理モード]は[次のアクションに移動]のままにして、[保存]をクリックしてください❼。
はい。これで完成!
STEPは長かったけど、慣れれば難しくないよ。
フローを実行しよう
フローを実行してください。店舗マスタ.xlsxは開いたままでかまいません。すんなりと終了したでしょう。変数ペインの[ExcelData]を見ると「銀座」と入っていますね。
今度は店舗マスタ.xlsxを閉じてから実行してください。今度は店舗マスタ.xlsxがExcelで開いてから終了したはずです。このように、当初の要件が満たされたフローが完成しました。
「条件分岐するフローだから[IF]アクションを使うんだな」と思わず、「エラー処理を使う」というテクニックを覚えましょう!
これで、また1つレベルアップしたゾ!
コメント ログインすると書き込めます