TransWikia.com

VBSもしくはPythonで、Excel特定値行のテキスト色を変更したい。

スタック・オーバーフロー Asked by Kwi10 on January 2, 2021

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

補足説明

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

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

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

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

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

3 Answers

VBSからエクセルを開いて、ご質問のコードを実行する場合は下記サンプルコードのような記述になります。
VBSではxlUpが使えないなど、VBAと方言の違いがあるので注意が必要です。

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

サンプルコードはリンク先を参考にしました。


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

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

Correct answer by payaneco on January 2, 2021

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

Excelの条件付き書式でIF/COUNTIF関数と組み合わせる方法

Answered by moondrip on January 2, 2021

Excel本体で提供される条件付き書式を使用することをお勧めします。条件付き書式では自身のセルだけでなく別のセルの値に応じて書式を付けることができます。

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

Answered by sayuri on January 2, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP