Página 1 de 1
VBA e HTML pegar valor entre string
Enviado: 09 Set 2020 às 15:07
por kiko
Boa tarde à todos, alguém saberia como poderia capturar o valor de "2 h 21 min" em um elemento que fiz Copy Element me deu essa string <span jstcache="265">2 h 21 min</span> em um determinado site.
Desde já agradeço e fico no aguardo
Re: VBA e HTML pegar valor entre string
Enviado: 09 Set 2020 às 16:12
por mucascosta
=EXT.TEXTO(A1;PROCURAR(">";A1;1)+1;10)
VBA e HTML pegar valor entre string
Enviado: 09 Set 2020 às 16:26
por kiko
mucascosta boa tarde e obrigado pela atenção dispensada, mas como usar o que foi proposto com VBA e HTML???
Re: VBA e HTML pegar valor entre string
Enviado: 09 Set 2020 às 16:44
por babdallas
Usei Expressões Regulares (REGEX).
Código: Selecionar todosPublic Function GetString(strTexto As String, strPadrao As String) As Variant
Dim objRegExp As Object
Dim vrtMatches As Variant
Dim vrtMatch As Variant
Dim vrtDados() As Variant
Dim lngCont As Long
Set objRegExp = VBA.CreateObject("VBScript.RegExp")
With objRegExp
.Global = True
.MultiLine = True
.IgnoreCase = True
.Pattern = strPadrao
Set vrtMatches = .Execute(sourceString:=strTexto)
ReDim vrtDados(1 To vrtMatches.Count)
lngCont = 1
For Each vrtMatch In vrtMatches
vrtDados(lngCont) = vrtMatch.Value
lngCont = lngCont + 1
Next vrtMatch
GetString = vrtDados
End With
End Function
Public Sub Teste()
VBA.MsgBox GetString("<span jstcache=""265"">2 h 21 min</span>", "\d h \d{1,2} min")(1)
End Sub
VBA e HTML pegar valor entre string
Enviado: 10 Set 2020 às 10:37
por kiko
babdallas bom dia e muito obrigado pela atenção dispensada, mas como usaria essa Função para pegar o ELEMENTO existente no site para retornar o valor, no caso apresentado é "2 h 21 min", mas poderia ser "21 min" ou até mesmo "2 h". Essa Função respeitaria as condições apresentadas anteriormente?
Como usaria com XMLHttpRequest As Object?
Como você percebeu não é somente um dado coletado, mas são vários na mesma solicitação.
Desde já agradeço e fico no aguardo.
Re: VBA e HTML pegar valor entre string
Enviado: 10 Set 2020 às 11:12
por babdallas
Eu tinha entendido que você tinha conseguido colocar a parte do HTML em uma string. Você conseguiu do response text do HTML para uma variável string ou não?
Se conseguiu, basta adaptar o padrão do REGEX para \d{0,2}( h ){0,1}\d{0,2}( min){0,1} na chamada da função. Eu testei e retornou o que queria usando a função que mandei na postagem anterior. Seguem alguns exemplos:
Código: Selecionar todosGetString("<span jstcache=""265"">2 h 21 min</span>", "\d{0,2}( h ){0,1}\d{0,2}( min){0,1}")(1)
Código: Selecionar todosGetString("<span jstcache=""265"">2 h</span>", "\d{0,2}( h ){0,1}\d{0,2}( min){0,1}")(1)
Código: Selecionar todosGetString("<span jstcache=""265"">23 h</span>", "\d{0,2}( h ){0,1}\d{0,2}( min){0,1}")(1)
Código: Selecionar todosGetString("<span jstcache=""265"">21 min</span>", "\d{0,2}( h ){0,1}\d{0,2}( min){0,1}")(1)
VBA e HTML pegar valor entre string
Enviado: 10 Set 2020 às 15:20
por kiko
babdallas boa tarde, mas aqui não deu.
Deu erro nessa linha ReDim vrtDados(1 To vrtMatches.Count)
fora do intervalo.
fico no aguardo. mais uma vez obrigado pela atenção
Re: VBA e HTML pegar valor entre string
Enviado: 10 Set 2020 às 16:38
por babdallas
Código: Selecionar todosOption Explicit
Public Function GetString(strTexto As String, strPadrao As String) As String
Dim objRegExp As Object
Dim vrtMatches As Variant
Dim vrtMatch As Variant
Dim vrtDados() As Variant
Dim lngCont As Long
Set objRegExp = VBA.CreateObject("VBScript.RegExp")
With objRegExp
.Global = True
.MultiLine = True
.IgnoreCase = True
.Pattern = strPadrao
Set vrtMatches = .Execute(sourceString:=strTexto)
ReDim vrtDados(1 To vrtMatches.Count)
lngCont = 0
For Each vrtMatch In vrtMatches
If vrtMatch.Value <> "" Then
lngCont = lngCont + 1
vrtDados(lngCont) = vrtMatch.Value
End If
Next vrtMatch
ReDim Preserve vrtDados(1 To lngCont)
GetString = vrtDados(1)
End With
End Function
Public Sub Teste()
VBA.MsgBox GetString("<span jstcache=""265"">2 h 21 min</span>", "(\d{1,2} h {0,1}){0,1}(\d{1,2} min){0,1}")
End Sub
VBA e HTML pegar valor entre string
Enviado: 11 Set 2020 às 11:03
por kiko
babdallas bom dia e obrigado pela atenção dispensada, com as mudanças agora funciona. Vou colocar como Resolvido e fazer alguns teste, qualquer coisa voltar a solicitar sua tal preciosa atenção.