概要
前回に続き、視認性を高めるため条件によってセルの背景に色付けします。VBScriptの実行アクションを使い、複数起動しているExcelブックから任意のExcelワークシートの列に条件書式を設定します。
環境
- Windows
10 Pro 21H211 Pro 23H2 - Power Automate for desktop
2.16.215.220202.46.263.24194 インストーラー版 -
Microsoft Excel for Microsoft 365バージョン2112ビルド16.0.14729.20254Microsoft® Excel® for Microsoft 365 MSO (バージョン 2408 ビルド 16.0.17928.20114) 64 ビット
注意等
Windows11では未検証です。- あくまでサンプルとご理解ください。
- 自己責任でお願いします。
-
2022年1月2024年9月の情報です。
列に条件書式を設定して背景に色を付ける
%ExcelInstance%に1~100の乱数を10000個出力。50以上の場合セルに色を付けます。VBScriptで列に条件書式を設定します。
-
Excelの起動
%ExcelInstance%を起動 -
FormatConditionsオブジェクトに、AddメソッドでXlFormatConditionTypeとXlFormatConditionOperatorを設定します。サンプルでは
(1,1,50,100)
としています。セルの値が50~100という意味の条件になります。FormatConditions
https://docs.microsoft.com/ja-jp/office/vba/api/excel.formatconditions
XlFormatConditionType
https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlformatconditiontype
XlFormatConditionOperator
https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlformatconditionoperator
VBScriptOption Explicit Dim XlApp Dim XlSheet Dim XlRange Dim XlCondition Set XlApp = GetObject("Book1").Application Set XlSheet = XlApp.Worksheets(1) Set XlRange = XlSheet.Range("A:A") '条件付き書式設定( 1=xlCellValue, 1=xlBetween ,50~100) Set XlCondition=XlRange.FormatConditions.Add(1,1,50,100) XlCondition.Interior.Color = RGB(184, 41, 117) Set XlCondition = Nothing Set XlRange = Nothing Set XlSheet = Nothing Set XlApp = Nothing
5. Excelを閉じる
%ExcelInstance%を閉じる
まとめ
条件書式を設定することができました。他にも列や行の幅を変えたりといろいろできます。スクリプトをフロー内で管理できるのは良いです。
2024年9月追記
セルに色を付けるアクション「Set color of cells in Excel worksheet」が実装されています。VBSを使わなくてもセルに色付けすることが可能です。
おまけ
2024年9月現在は解決されています。
Excelの起動アクションを使った後、Excelを閉じるアクションを使わず閉じるボタンで終了させていると、プロセスが終了せず、どんどんたまります。「新しいExcelプロセスの配下にネストする」がONの場合ひどいことになります。
コマンドプロンプトでtasklist /v /fi "IMAGENAME eq excel.exe"
などとするか、タスクマネージャーで確認できます。プロセスが残っている場合、たとえばVBScriptの実行アクションにGetobject(, "Excel.Application")を使っていたりするとエラーになります。
などとしてあげるとよいかもしれません。
参考
FormatConditionsについては
XlFormatConditionTypeについては
XlFormatConditionOperatorについては