Macro tipo de cambio con Formulario

Tengo la siguiente macro:

Sub Tcmes()
Dim URL As String
Dim IE As InternetExplorer
Dim HTMLdoc As HTMLDocument
Dim TDelements As IHTMLElementCollection
Dim TDelement As HTMLTableCell
Dim r As Long
Dim Tc_Mes, tc_año As String
Dim intFound As Integer
Dim HTMLDoc2 As MSHTML.HTMLDocument
Range("E5:G36").ClearContents
Tc_Mes = retornarTC(Cells(5, 9))
tc_año = Range("J5").Value
Application.StatusBar = "Obteniendo Tipo de Cambio desde la Web de SUNAT"
URL = "http://www.sunat.gob.pe/cl-at-ittipcam/tcS01Alias"
Set IE = New InternetExplorer
With IE
.navigate URL
.Visible = False
While .Busy Or .readyState <> READYSTATE_COMPLETE: DoEvents: Wend
Set HTMLdoc = .document
End With
With HTMLdoc.selectForm
.mes.selectedIndex = Tc_Mes
.anho.Value = tc_año
.submit
End With
Set HTMLDoc2 = IE.document
While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE: DoEvents: Wend
Set TDelements = HTMLDoc2.getElementsByTagName("Td")
For Each TDelement In TDelements
Select Case TDelement.className

Case "H3"
Range("e65536").End(xlUp).Offset(1, 0).Value = DateSerial(tc_año, Tc_Mes, TDelement.innerText)

Case "tne10"
If TDelement.innerText = "" Then TDelement.innerText = "SIN T.C"
If Range("e65536").End(xlUp).Offset(0, 1).Value = "" Then
Range("f65536").End(xlUp).Offset(1, 0).Value = TDelement.innerText
Else
Range("f65536").End(xlUp).Offset(0, 1).Value = TDelement.innerText
End If
End Select
Next
Application.StatusBar = "Listo!!! Se obtuvo el tipo de cambio"

If Range("E5").Value = "" Then
Range("I9").Value = "No hay"
Application.StatusBar = "Error de conexión!..."
Else
Range("I9").Value = Cells(5, 9) & " - " & Range("J5").Value
End If
IE.Quit
End Sub

Public Function retornarTC(ByVal DATO As String)
Select Case DATO
Case "ENERO": m = 1
Case "FEBRERO": m = 2
Case "MARZO": m = 3
Case "ABRIL": m = 4
Case "MAYO": m = 5
Case "JUNIO": m = 6
Case "JULIO": m = 7
Case "AGOSTO": m = 8
Case "SEPTIEMBRE": m = 9
Case "OCTUBRE": m = 10
Case "NOVIEMBRE": m = 11
Case "DICIEMBRE": m = 12
End Select
retornarTC = m
End Function

Hay forma que esto se ejecuto con un botón mediante formulario.

1 Respuesta

Respuesta
2

[Hola

Sin ánimo de molestarte, la verdad es una pregunta bastante básica que repasando manuales muy básicos de VBA puede encontrarse. Sugiero, estimado, no solo copiar y pegar códigos/macros sino comenzar a leer sobre el tema y sobre todo, tratar de entender cada línea que usas. Ese consejo es que por lo visto seguirás usando VBA.

Alternativa 1:

En el evento click de un botón del Userform pegas todo el codigo de la macro "Tcmes" y listo .

Alternativa 2:

En el evento click de un botón del Userform colocas:

Call Tcmes

Listo

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas