Здравстуйте.
Пытаюсь написать скрипт, по аналогии с VBA, но не получается. :(
Хочу, чтобы скрипт открыл файл (в фоне), сделал бы лист БД видимым,
поменял старую цену на новую (вот тут-то и не работает),
сохранил бы файл и закрыл его.
Как записать это правильно, помогите, пожалуйста.
Sub test()
Dim objXL
Dim Secur
Dim iLastRow
Dim iRow
Const Cena = 4567.128 'цена старая
Const CenaNew = 4536.528 'цена новая
Set objXL = CreateObject("Excel.Application")
With objXL
.ScreenUpdating = True
.EnableEvents = False
.DisplayAlerts = False ' выключаем все предупреждения
.Visible = True 'False
'.Workbooks.Open (GasIA_Schet.xls)
.Workbooks.Open (Mid(Wscript.ScriptFullName, 1, Len(Wscript.ScriptFullName) - 8) & ".xls")
.Sheets("БД").Visible = -1
.Sheets("БД").Select
With .Sheets("БД")
iLastRow = .UsedRange.Row - 1 + .UsedRange.Rows.Count
For iRow = 3 To iLastRow Step 1
If .Cells(iRow, 3) = "Промисловість" Or .Cells(iRow, 3) = "Компобут" Then
If .Cells(iRow, 4) = "Сумигаз" Then
If .Cells(iRow, 13) = Cena Then .Cells(iRow, 13) = CenaNew
End If
End If
Next iRow
End With
.Sheets("БД").Visible = 2
.ActiveWorkbook.Save
.ActiveWorkbook.Close
.DisplayAlerts = True ' включаем все предупреждения
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Пытаюсь написать скрипт, по аналогии с VBA, но не получается. :(
Хочу, чтобы скрипт открыл файл (в фоне), сделал бы лист БД видимым,
поменял старую цену на новую (вот тут-то и не работает),
сохранил бы файл и закрыл его.
Как записать это правильно, помогите, пожалуйста.
Sub test()
Dim objXL
Dim Secur
Dim iLastRow
Dim iRow
Const Cena = 4567.128 'цена старая
Const CenaNew = 4536.528 'цена новая
Set objXL = CreateObject("Excel.Application")
With objXL
.ScreenUpdating = True
.EnableEvents = False
.DisplayAlerts = False ' выключаем все предупреждения
.Visible = True 'False
'.Workbooks.Open (GasIA_Schet.xls)
.Workbooks.Open (Mid(Wscript.ScriptFullName, 1, Len(Wscript.ScriptFullName) - 8) & ".xls")
.Sheets("БД").Visible = -1
.Sheets("БД").Select
With .Sheets("БД")
iLastRow = .UsedRange.Row - 1 + .UsedRange.Rows.Count
For iRow = 3 To iLastRow Step 1
If .Cells(iRow, 3) = "Промисловість" Or .Cells(iRow, 3) = "Компобут" Then
If .Cells(iRow, 4) = "Сумигаз" Then
If .Cells(iRow, 13) = Cena Then .Cells(iRow, 13) = CenaNew
End If
End If
Next iRow
End With
.Sheets("БД").Visible = 2
.ActiveWorkbook.Save
.ActiveWorkbook.Close
.DisplayAlerts = True ' включаем все предупреждения
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub