Ну, смотрите:
Скрытый текст
Код:
Option Explicit
'Const READYSTATE_COMPLETE = 4
'Dim objIE
Dim objRange
Dim arrRow
Dim boolIsFirstRow
Dim i
With WScript.CreateObject("Excel.Application")
With .Workbooks.Open("C:\Мои проекты\0244\ip-collector-025.xlsx")
With .Worksheets.Item(1)
If .AutoFilterMode Then
boolIsFirstRow = True
For Each objRange In .AutoFilter.Range.Rows
If boolIsFirstRow Then
boolIsFirstRow = False
arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2))
WScript.Echo Join(arrRow, vbTab)
WScript.Echo "--------------------------"
Else
arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2))
WScript.Echo Join(arrRow, vbTab)
'For i = LBound(arrRow) To UBound(arrRow)
' WScript.Echo arrRow(i)
'Next
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
'Set objIE = WScript.CreateObject("InternetExplorer.Application")
'
'With objIE
' .Visible = False
' .Navigate "http://admin:password@10.37.167.114/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 = "Passwordnew"
' .elements("newpassw2").value = "Passwordnew"
'
' .submit()
' End With
'
' .Visible = True
'End With
'
'Set objIE = Nothing
WScript.Quit 0
Содержимое столбцов будет построчно появляться в массиве arrRow(). Что есть что на Рабочем листе — смотрите сами, мне мало о чём говорят поля site и service. Примерный облагороженный вид Вашего кода — под комментариями.
Запись в файл простая — создали (или открыли для добавления и пишете, в конце — закрываете. Например, запишем всё содержимое рабочего листа в текстовый файл:
Скрытый текст
Код:
Option Explicit
'Const READYSTATE_COMPLETE = 4
'Dim objIE
Dim objRange
Dim arrRow
Dim boolIsFirstRow
Dim i
Dim objFSO
Dim objTS
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
With WScript.CreateObject("Excel.Application")
With .Workbooks.Open("C:\Мои проекты\0244\ip-collector-025.xlsx")
With .Worksheets.Item(1)
If .AutoFilterMode Then
boolIsFirstRow = True
Set objTS = objFSO.CreateTextFile("C:\Мои проекты\0244\ip-collector-025.csv", True)
For Each objRange In .AutoFilter.Range.Rows
If boolIsFirstRow Then
boolIsFirstRow = False
arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2))
WScript.Echo Join(arrRow, vbTab)
WScript.Echo "--------------------------"
objTS.WriteLine Join(arrRow, ",")
Else
arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2))
WScript.Echo Join(arrRow, vbTab)
objTS.WriteLine Join(arrRow, ",")
End If
Next
objTS.Close
Set objTS = Nothing
Else
WScript.Echo "Probably no Autofilter in first worksheet in this workbook."
End If
End With
.Close
End With
.Quit
End With
'Set objIE = WScript.CreateObject("InternetExplorer.Application")
'
'With objIE
' .Visible = False
' .Navigate "http://admin:password@10.37.167.114/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 = "Passwordnew"
' .elements("newpassw2").value = "Passwordnew"
'
' .submit()
' End With
'
' .Visible = True
'End With
'
'Set objIE = Nothing
WScript.Quit 0
Мне, правда, не очень понятно, зачем писать именно в текстовый файл, чтобы открывать его потом в Excel, вместо того, чтобы зараз писать непосредственно в Рабочую книгу Excel, коль мы так и так Excel пользуем в коде.