Я хочу дважды щелкнуть ячейку в Excel, чтобы открыть URL-адрес.
Я использовал VBA для этого аспекта, но столкнулся с проблемой. Я хочу извлечь значение из URL-адреса и использовать его как переменную в VBA.
Вот часть скрипта:
Dim ID As String
ID = ActiveSheet.Range("S" & Target.Cells.Row & "").Value
rptUrl = "http://... = " + ID
If (ID <> "") Then
ThisWorkbook.FollowHyperlink (rptUrl)
В таком случае, если идентификатор находится в конце URL-адреса, он работает.
Что произойдет, если идентификатор, который я хочу извлечь, находится где-то в середине URL-адреса, а не в конце?
Например:
rptUrl = "http://..**ID**.. = "
Я пробовал следующее:
rptUrl = "http://.. + **ID** + .. = "
Спасибо basodre за ваш немедленный ответ. Пример URL-адреса: mysrv.com/form.jsp?id=12345&cn=0 Значение, которое я хочу, находится сразу после id= и непосредственно перед &cn, и длина может варьироваться, это может быть 4, 5, 6 символов. .
По сути, вам нужны некоторые функции обработки строк, такие как Pos
, Mid
, Split
, или попробуйте регулярные выражения. Но вы должны привести несколько примеров. И, пожалуйста, отредактируйте свой вопрос и отформатируйте код как код
Спасибо FunThomas, я отформатировал код. К сожалению, я не знаком с этими функциями, я посмотрю на них.
Идентификатор является частью списка параметров URL-адреса. Поскольку не имеет значения, где находится параметр в списке параметров, есть ровно две возможности. Либо это первый параметр, который всегда стоит за знаком вопроса (?), либо это параметр где-то за ним, тогда он всегда стоит за амперсандом (&). Так что первое, что я бы сделал, это обрезал бы список параметров на вопросительном знаке. Затем разделите список по амперсанду и, наконец, найдите нужный параметр из элементов. Сам я могу сделать это только с помощью VBA, но, вероятно, это работает и с формулами.
Предоставьте реалистичные примеры с ожидаемым результатом. Некоторые базовые манипуляции со строками, вероятно, помогут вам обойтись без VBA.
Если вы хотите использовать регулярное выражение, вот вариант, который упаковывает регулярное выражение в функцию, которую вы можете вызвать. Если URL-адрес содержит «ID», он вернет соответствующее значение; в противном случае он просто вернет пустую строку
Function GetId(sInput) As String
Dim oReg As Object
Dim m As Variant
Dim sOutput As String
sOutput = ""
Set oReg = CreateObject("VBScript.Regexp")
With oReg
.Global = False
.ignorecase = True
.MultiLine = False
.Pattern = "id=(\w+)[&|$]"
End With
If oReg.Test(sInput) Then
sOutput = oReg.Execute(sInput)(0).submatches(0)
End If
GetId = sOutput
End Function
Sub Test()
Debug.Print GetId("mysrv.com/form.jsp?id=12345&cn=0")
End Sub
Как узнать, где начинается и заканчивается идентификатор? Можете ли вы показать несколько примеров URL-адресов, которые показывают немного больше деталей, чем те, которые вы разместили? Вы можете использовать фейковую информацию, но она поможет понять.