69000


VBSもしくはPythonを使用して ExcelのH列(H列ではなくK列でした)セルの値が ”A"
でないとき、アクティブ行のテキストの色を全て赤にしたいです。Excelは開いた状態から開始し、開いた状態で終了します。

### 補足説明

現在、RPA使用中で、RPAの機能ではExcelのカラーパレットの指定が不安定なため、VBAを作成しました。VBA使用の場合は、別のWorkbookを開く作業が必要となります。（なるべくこの開く作業はなくしたいです。）VBSとPythonと記載させていただいた理由は、RPA内にインライン組込みができるためです。vbsとPythonは、超初心者で参考サイト等おしえていただけると助かります。

### Excelの条件付き書式設定について

条件値のK列が作業列となっているため最終的に列ごと削除してしまいます。そのためテキスト色が元にもどってしまいます。また、次回使用で、条件付き書式設定をその都度行うこともできません。

VBAでは、以下のようになります。こちらは今のところ問題なく使用できています。

[code]

    Sub test1()
    
    Dim wb As Workbook
    Dim n As String
    Dim i As Long
    
    For Each wb In Workbooks
        n = wb.Name
        'ファイル名は処理年月で変更になります。'
        If Instr(n,"ファイル名の特定文字") > 0 Then
            Workbooks(n).Activate
            Cells(2,11).Select
            For i = 2 To Cells(Rows.Count,1).End(xlUp).Row
                If Cells(i,11)Value <> "A" Then
                    Rows(i).Font.Color = RGB(255,0,0)
                Else
                End If
            Next i
        Else
        End If
    Next wb
    
    End Sub
    
[/code]


CC BY-SA 4.0
2020-07-25T11:25:00.803
68954
2020-08-03T00:12:00.037
2020-08-03T00:12:00.037
3060
41248
question
python vba excel vbs
VBSもしくはPythonで、Excel特定値行のテキスト色を変更したい。


Excel本体で提供される[条件付き書式](https://support.microsoft.com/ja-
jp/office/%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E6%9B%B8%E5%BC%8F%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E6%83%85%E5%A0%B1%E3%82%92%E5%BC%B7%E8%AA%BF%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B-fed60dfa-1d3f-4e13-9ecb-f1951ff89d7f)を使用することをお勧めします。条件付き書式では自身のセルだけでなく別のセルの値に応じて書式を付けることができます。

Excel本体の機能のため、いちいちVBA / VBS / Python等で変更毎に書式を再設定する必要がなくなります。


CC BY-SA 4.0
2020-07-25T12:30:11.303
68956
2020-07-25T12:30:11.303
4236
68954
answer


VBSからエクセルを開いて、ご質問のコードを実行する場合は下記サンプルコードのような記述になります。  
VBSでは[xlUpが使えない](https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10193408245)など、VBAと方言の違いがあるので注意が必要です。

[code]

    Sub test1(oSheet, colNo)
        oSheet.Cells.Font.ColorIndex = xlNone
        For i = 2 To oSheet.Cells(oSheet.Rows.Count, colNo).End(-4162).Row
            If oSheet.Cells(i, colNo).value <> "A" Then
                oSheet.Rows(i).Font.ColorIndex = 3 '行全体の文字を赤くする
            End If
        Next
    End Sub
    
    ' Excel起動
    Set oXlsApp = CreateObject("Excel.Application")
    If oXlsApp Is Nothing Then
        ' Excel起動失敗
        MsgBox "Excel起動失敗" 
    Else
        ' Excel起動成功
        ' --Excel表示（falseにすると非表示にできる）
        oXlsApp.Application.Visible = true
        ' --Excelの警告を非表示にする
        oXlsApp.Application.DisplayAlerts = False
        ' --3秒待つ
        WScript.Sleep(3000)
        Set oBook = oXlsApp.Application.Workbooks.Open("C:/test/Book1.xlsx")
        Set oSheet = oXlsApp.Worksheets(1)
        ' --8列目(H列)を赤く塗る
        test1 oSheet, 8
        WScript.Sleep(1000)
        ' --上書き保存
        oBook.Save
        ' --Excel終了
        oXlsApp.Quit
        ' --Excelオブジェクトクリア
        Set oXlsApp = Nothing
    End If
    
[/code]

サンプルコードは[リンク先](https://knowledge.reontosanta.com/archives/838)を参考にしました。

* * *

スタック・オーバーフローへようこそ！  
質問文を読んでいて気になる点がいくつかあります。  
ご質問時点ではクリアになっていない箇所もあると思いますので、コメントに応じて適宜質問文を更新していただくと、より良い回答が返りやすくなるかもしれません。

  * Excelを開いた状態で外部コードを実行しても通常は読み取り専用になって変更を保存できません。 
    * サンプルコードはExcelを閉じた状態で実行することを前提としています。
  * ご質問のコードでは11列目をIF文の判定に用いていますが、H列は8列目ではありません。
  * RPAでExcel操作して色設定や条件付き書式を設定できませんか？ 
    * 有償サポートのあるRPAならば、そちらにお問い合わせいただく選択肢も検討に価するかと思います。


CC BY-SA 4.0
2020-07-27T01:02:56.550
69000
2020-07-27T01:02:56.550
9820
68954
answer


その程度ならVBAやVBSを使わなくても、エクセルの関数でも十分に対応可能です。  
参考URL貼っておきますね。

[Excelの条件付き書式でIF/COUNTIF関数と組み合わせる方法](https://office-
hack.com/excel/conditional-formatting-if/)


CC BY-SA 4.0
2020-07-31T05:22:12.363
69140
2020-07-31T06:41:45.927
2020-07-31T06:41:45.927
3060
34303
68954
answer