пока решил вот так, но не уверен что столько split'ов это правильно, и еще если искомый параметр отсутствует выдается ошибка error 2042, как сделать чтобы просто возвращалось Cells(4, 3)=""
Код
Sub spliteItem()
Dim strValue, strParam, page, value, param, a, SplitURL, SplitRavno, Element, _
ArrayValue, ArrayParam, OneElement, OneElementStr, strParamResults As String
Dim strParamText, strParamPage As String
Dim i, countAmp As Integer
a = "http://www.softodrom.ru/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA/?text=portable&where=soft" _
& "&results=50&soft_index=descr&news_index=descr&games_index=descr&blogs_index=description&page=1"
countAmp = Len(a) - Len(Replace(a, "&", ""))
SplitURL = Split(a, "&")
' извлекаем 1 параметр (text=portable)
OneElement = Split(SplitURL(0), "?")
OneElementStr = OneElement(1)
' приводим к общему виду и создаем первые элементы массивов
SplitRavno = Split(OneElementStr, "=")
ArrayParam = SplitRavno(0)
ArrayValue = SplitRavno(1)
'формируем массивы (пареметры и значения)
For i = 1 To countAmp
Element = SplitURL(i)
SplitRavno = Split(Element, "=")
ArrayParam = ArrayParam & "," & SplitRavno(0)
ArrayValue = ArrayValue & "," & SplitRavno(1)
Next i
param = ArrayParam
value = ArrayValue
strValue = Split(value, ",")
strParam = Split(param, ",")
strParamPage = Application.match("page", strParam, 0)
Cells(4, 2) = strValue(strParamPage - 1)
strParamText = Application.match("text", strParam, 0)
Cells(4, 3) = strValue(strParamText - 1)
strParamResults = Application.match("results", strParam, 0)
Cells(4, 4) = strValue(strParamResults - 1)
End Sub
Public Sub x()
Dim value(), param(), SplitURL
Dim s as string, a as string
Dim i As Integer
a = "http://www.softodrom.ru/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA/?text=portable&where=soft" _
& "&results=50&soft_index=descr&news_index=descr&games_index=descr&blogs_index=description&page=1"
s = Right(a, Len(a) - InStrRev(a, "?") 'строка после "?"
SplitURL = Split(s, "&") 'сплит
'задаем размер массивов = кол-во элементов в сплите
ReDim param(UBound(SplitURL))
ReDim value(UBound(SplitURL))
'в цикле пробегаем каждую пару, делая дополнительный сплит
For i = 0 To UBound(SplitURL)
param(i) = Split(SplitURL(i), "=")(0)
value(i) = Split(SplitURL(i), "=" )(1)
Next i
Debug.Print param(5) & " = " & value(5) 'далее хоть куда, обращаясь по индексу массива.
End Sub
выдернуть из него некоторые параметры, допустим: text, page и results
Код
Sub spliteItem_1()
Dim i As Integer
Dim a, SplitURL, value, param
a = "http://www.softodrom.ru/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA/?text=portable&where=soft" _
& "&results=50&soft_index=descr&news_index=descr&games_index=descr&blogs_index=description&page=1"
SplitURL = Split(a, "?")
SplitURL = Split(SplitURL(1), "&")
For i = 0 To UBound(SplitURL)
If InStr(SplitURL(i), "page=") = 1 Then
Cells(4, 2) = Right(SplitURL(i), Len(SplitURL(i)) - 5)
End If
If InStr(SplitURL(i), "text=") = 1 Then
Cells(4, 3) = Right(SplitURL(i), Len(SplitURL(i)) - 5)
End If
If InStr(SplitURL(i), "results=") = 1 Then
Cells(4, 4) = Right(SplitURL(i), Len(SplitURL(i)) - 8)
End If
'value = value & " " & Split(SplitURL(i), "=")(0)
'param = param & " " & Split(SplitURL(i), "=")(1)
Next
End Sub