Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Смена цветовой схемы Office Excel по условию
 
Здравствуйте.

в своей повседневной работе получаю файлы Excel, работа с которыми зависит от некоторых условий, чтобы не путать порядок работы с разными файлами написал код для авто смены цветовой схемы по условию(может быть любым абсолютно), код записывает номер новой цветовой схемы в реестр и затем закрывает открывает приложение Excel в новой цветовой схеме, возможно ли сделать смену цветовой схемы не прибегая у закрытию/открытию Excel?

Код:
Код
Sub Auto_Open()
Application.OnTime Now() + TimeSerial(0, 0, 2), "changetheme"
End Sub

Sub dark_theme()
CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Office\14.0\Common\Theme", 3, "REG_DWORD"
CreateObject("WScript.Shell").Run "excel.exe /e """ & psDocName & """"
Application.Quit
End Sub

Sub white_theme()
CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Office\14.0\Common\Theme", 2, "REG_DWORD"
CreateObject("WScript.Shell").Run "excel.exe /e """ & psDocName & """"
Application.Quit
End Sub

Sub changetheme()
Application.ScreenUpdating = False
psMyDir = ActiveWorkbook.Path
ptwbn = ActiveWorkbook.Name
psDocName = psMyDir & Application.PathSeparator & ptwbn
If InStr(1, LCase(ActiveWorkbook.ActiveSheet.Cells(3, 6)), "№1") > 0 Then aiaw = 1:
If InStr(1, LCase(ActiveWorkbook.ActiveSheet.Cells(3, 7)), "№1") > 0 Then aiaw = 1:
If InStr(1, LCase(ActiveWorkbook.ActiveSheet.Cells(3, 6)), "№2") > 0 Then aiad = 1: MsgBox "      НЕТ       ", vbCritical
If InStr(1, LCase(ActiveWorkbook.ActiveSheet.Cells(3, 7)), "№2") > 0 Then aiad = 1: MsgBox "      НЕТ       ", vbCritical
If aiaw = 0 And aiad = 0 Then
     MsgBox "условия не определены", vbExclamation
        If CreateObject("WScript.Shell").RegRead("HKCU\Software\Microsoft\Office\14.0\Common\Theme") = 2 Then GoTo e1
        ActiveWorkbook.Close: white_theme
End If
If aiad = 1 Then
                If CreateObject("WScript.Shell").RegRead("HKCU\Software\Microsoft\Office\14.0\Common\Theme") = 3 Then GoTo e1 ' CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Office\12.0\Common\Theme", 3, "REG_DWORD"
                ActiveWorkbook.Close
                dark_theme
Else
    If aiaw = 1 Then
        If CreateObject("WScript.Shell").RegRead("HKCU\Software\Microsoft\Office\14.0\Common\Theme") = 2 Then GoTo e1 ' CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Office\12.0\Common\Theme", 3, "REG_DWORD"
            ActiveWorkbook.Close
            white_theme
    End If
End If
e1:
Application.ScreenUpdating = True
End Sub

Изменено: ivankin - 22.08.2017 18:07:23
Страницы: 1
Наверх