スタック・オーバーフロー 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は、超初心者で参考サイト等おしえていただけると助かります。
条件値の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
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
サンプルコードはリンク先を参考にしました。
スタック・オーバーフローへようこそ!
質問文を読んでいて気になる点がいくつかあります。
ご質問時点ではクリアになっていない箇所もあると思いますので、コメントに応じて適宜質問文を更新していただくと、より良い回答が返りやすくなるかもしれません。
Correct answer by payaneco on January 2, 2021
その程度ならVBAやVBSを使わなくても、エクセルの関数でも十分に対応可能です。
参考URL貼っておきますね。
Answered by moondrip on January 2, 2021
Excel本体で提供される条件付き書式を使用することをお勧めします。条件付き書式では自身のセルだけでなく別のセルの値に応じて書式を付けることができます。
Excel本体の機能のため、いちいちVBA / VBS / Python等で変更毎に書式を再設定する必要がなくなります。
Answered by sayuri on January 2, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP