Показать полную графическую версию : Автоматизация изменения данных авторизации на устройстве
У меня строка 37 — «Do». Покажите получившийся у Вас код.
Armsinglom
13-02-2019, 10:18
Option Explicit
Const READYSTATE_COMPLETE = 4
Dim objIE
Dim objRange
Dim arrRow
Dim boolIsFirstRow
Set objIE = Nothing
With WScript.CreateObject("Excel.Application")
With .Workbooks.Open("C:\Users\gzg\Desktop\ip.xlsx")
With .Worksheets.Item(1)
If .AutoFilterMode Then
boolIsFirstRow = True
For Each objRange In .AutoFilter.Range.Rows
If boolIsFirstRow Then
boolIsFirstRow = False
Else
arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2))
If objIE Is Nothing Then
Set objIE = WScript.CreateObject("InternetExplorer.Application")
End If
With objIE
.Navigate "http://admin:password@" & arrRow(1) & "/chgpassw.htm"
Do
WScript.Sleep 100
Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
With .Document.forms("frm")
.elements("user_no").value = "130"
.submit()
End With
Do
WScript.Sleep 100
Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
With .Document.forms("frm")
.elements("oldpassw").value = "password"
.elements("newpassw1").value = arrRow(3)
.elements("newpassw2").value = arrRow(3)
.submit()
End With
' А результат-то где?!
End With
End If
Next
Else
WScript.Echo "Probably no Autofilter in first worksheet in this workbook."
End If
End With
.Close
End With
.Quit
End With
If Not objIE Is Nothing Then
objIE.Quit
Set objIE = Nothing
End If
WScript.Quit 0
Armsinglom
13-02-2019, 23:36
Получается что ругается вот на это:
Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
Я правильно понимаю что мы ждем выполнения вот этой строки:
.Navigate "http://admin:password@" & arrRow(1) & "/chgpassw.htm
она не отрабатывает и скрипт умирает?
Вообщем при разных запусках скрипта может вылетать две ошибки:
- The object invoked has disconnected from its client. (80010108)
- Unspecified error (80004005)
и ругаются на одну и туже строку.
Armsinglom
11-09-2019, 21:41
Возобновлю тему.
Мне удалось заставить работать скрипт (проблема была вызвана с ограничениями на rdp).
Option Explicit
Const READYSTATE_COMPLETE = 4
Dim objIE
Dim objRange
Dim arrRow
Dim boolIsFirstRow
Set objIE = Nothing
With WScript.CreateObject("Excel.Application")
With .Workbooks.Open("C:\Users\gzg\Desktop\ip.xlsx")
With .Worksheets.Item(1)
If .AutoFilterMode Then
boolIsFirstRow = True
For Each objRange In .AutoFilter.Range.Rows
If boolIsFirstRow Then
boolIsFirstRow = False
Else
arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2))
If objIE Is Nothing Then
Set objIE = WScript.CreateObject("InternetExplorer.Application")
End If
With objIE
.Navigate "http://admin:password@" & arrRow(1) & "/chgpassw.htm"
Do
WScript.Sleep 100
Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
With .Document.forms("frm")
.elements("user_no").value = "130"
.submit()
End With
Do
WScript.Sleep 100
Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
With .Document.forms("frm")
.elements("oldpassw").value = "password"
.elements("newpassw1").value = arrRow(3)
.elements("newpassw2").value = arrRow(3)
.submit()
End With
' А результат-то где?!
End With
End If
Next
Else
WScript.Echo "Probably no Autofilter in first worksheet in this workbook."
End If
End With
.Close
End With
.Quit
End With
If Not objIE Is Nothing Then
objIE.Quit
Set objIE = Nothing
End If
WScript.Quit 0
Есть пару проблем,
1) он почему то работает только с последним ip из спискаWith .Workbooks.Open("C:\Users\gzg\Desktop\ip.xlsx")
2) Так же есть проблема, если вдруг стандартный логин/пароль который указан в скрипте не подошел, то выскакивает окно для повторной попытки ввода логин/пароль. Из за проблемы которая в пункте 1, я не пойму будет он работать дальше, несмотря на ошибку авторизации или будет ждать пока я ввиду вручную корректные логин/пароль.
1) он почему то работает только с последним ip из списка »
Он работает со всеми строками из диапазона автофильтра:
For Each objRange In .AutoFilter.Range.Rows
2) Так же есть проблема, если вдруг стандартный логин/пароль который указан в скрипте не подошел, то выскакивает окно для повторной попытки ввода логин/пароль. Из за проблемы которая в пункте 1, я не пойму будет он работать дальше, несмотря на ошибку авторизации или будет ждать пока я ввиду вручную корректные логин/пароль. »
Без понятия. Вставляйте отладочные WScript.Echo "…" и смотрите.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.