Извлечь значение из URL и установить его как переменную

Я хочу дважды щелкнуть ячейку в 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** + .. = "

Как узнать, где начинается и заканчивается идентификатор? Можете ли вы показать несколько примеров URL-адресов, которые показывают немного больше деталей, чем те, которые вы разместили? Вы можете использовать фейковую информацию, но она поможет понять.

basodre 09.12.2020 16:28

Спасибо basodre за ваш немедленный ответ. Пример URL-адреса: mysrv.com/form.jsp?id=12345&cn=0 Значение, которое я хочу, находится сразу после id= и непосредственно перед &cn, и длина может варьироваться, это может быть 4, 5, 6 символов. .

prm 09.12.2020 16:36

По сути, вам нужны некоторые функции обработки строк, такие как Pos, Mid, Split, или попробуйте регулярные выражения. Но вы должны привести несколько примеров. И, пожалуйста, отредактируйте свой вопрос и отформатируйте код как код

FunThomas 09.12.2020 16:36

Спасибо FunThomas, я отформатировал код. К сожалению, я не знаком с этими функциями, я посмотрю на них.

prm 09.12.2020 16:58

Идентификатор является частью списка параметров URL-адреса. Поскольку не имеет значения, где находится параметр в списке параметров, есть ровно две возможности. Либо это первый параметр, который всегда стоит за знаком вопроса (?), либо это параметр где-то за ним, тогда он всегда стоит за амперсандом (&). Так что первое, что я бы сделал, это обрезал бы список параметров на вопросительном знаке. Затем разделите список по амперсанду и, наконец, найдите нужный параметр из элементов. Сам я могу сделать это только с помощью VBA, но, вероятно, это работает и с формулами.

Zwenn 09.12.2020 17:09

Предоставьте реалистичные примеры с ожидаемым результатом. Некоторые базовые манипуляции со строками, вероятно, помогут вам обойтись без VBA.

QHarr 09.12.2020 20:00
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
6
285
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите использовать регулярное выражение, вот вариант, который упаковывает регулярное выражение в функцию, которую вы можете вызвать. Если 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

Другие вопросы по теме