Я хотел бы преобразовать скрипт VBA
в код win32com
, чтобы выбрать и изменить свойство формы линии на листе Excel. Я могу выбрать строку (вижу строку, выбранную на листе Excel), но не могу изменить свойство.
Может ли кто-нибудь мне помочь?
Код VBA
Sheets("Maps").Select
Sheets("Maps").Shapes.Range(Array(item_in_review_2)).Select
With Selection.ShapeRange.Line
.Weight = 3
If .ForeColor.RGB = RGB(0, 0, 0) Then
.ForeColor.RGB = RGB(0, 255, 0)
Else
.ForeColor.RGB = RGB(255, 0, 0)
End If
End With
Это мой код на python
import win32com.client as win32
import os
def rgbToInt(rgb):
colorInt = rgb[0] + (rgb[1] * 256) + (rgb[2] * 256 * 256)
return colorInt
xlApp = win32.gencache.EnsureDispatch('Excel.Application')
xlApp.Visible = True
wb = xlApp.Workbooks.Open('C:\\Users\\xxx\\PycharmProjects\\prova\\Book1.xlsx')
sht = wb.Worksheets('Maps')
OTS_review = 'test'
changeline = sht.Shapes(OTS_review).Select()
changeline.Width = 3
if changeline.ForeColor.RGB == rgbToInt((255,0,0)):
changeline.ForeColor.RGB = rgbToInt((0, 255, 0))
else:
changeline.ForeColor.RGB = rgbToInt((255, 0, 0))
Это сообщение об ошибке
Traceback (последний вызов был последним):
File "C: /Users/xxxx/PycharmProjects/prova/xxx.py ", строка 18, в changeline.Width = 3
AttributeError: объект 'NoneType' не имеет атрибута 'Width'