Jump to content

Abrir url usando vba


Go to solution Solved by Luis paz,

Recommended Posts

Hola buena tarde tengo 2 preguntas,

Me gustaría saber si hay alguna forma de abrir una url usando vba. Actualmente llevo poco más de 1 mes usando vba y trabajo en un proyecto donde hay 2 columnas (a y b) en una tabla dinámica titulada gusto personales, el usuario con ayuda de listas desplegables elige  1 valor de cada una, esas elecciones y usando for next me ayudan de una lista de 300 url ya precargadas a definir su resultado "específico"  para cada elección y guardarlo en una variable X, mi duda es, como hago que cuando ya tengo la url que desea el usuario con sus elecciones abrirla en una página web.

Vi muchos códigos de como abrir una url desde vba pero con una  url ya definida, en caso de que la url sea por así decirlo cambiante y por eso le asignara una variable de tipo string para guardar ese texto la pregunta es. 1. ¿Hay forma de usar vba para abrir en el navegador la url que guarde en X?

Mi código ya lo tengo totalmente armado por si el usuario no elige un dato de alguna de las 2 columnas arroje msg indicando complete su selección, solo me falta que cuando el resultado sea positivo el valor asignado a X se abra en el navegador.    

Adicional a lo mucho que llegó mi imaginación fue proyectar en una celda la URL como "texto sin formato" el resultado del usuario, convertirlo a hipervinculo y hasta ahí llegué. 2 ¿Hay forma de usar vba para abrir en el navegador un hipervinculo de una celda específica?, con el fin de que el proceso sea automático.

 

Espero haberme explicado bien, saludos. 

Link to post
Share on other sites
  • Solution

Para Abrir URL

Sub AbrirURL()
Dim X As Variant
X = "https://naycon.com.mx/excofisad-robots-para-contadores-administradores-automatizacion/"
ActiveWorkbook.FollowHyperlink Address:=X
End Sub

Para abrir el Hipervinculo:

Range("G5").Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Hola a todos y gracias por vuestra ayuda de antemano. Me he encontrado con un problema que no sé muy bien como resolver, espero que alguien me pueda hechar una mano, porque ya le he dado mil vueltas y estoy atascado, la verdad. Gracias.     Sub buscar() 'Caso 1, compara fila por fila en el rango C1:C100 'Si en una fila encuentra el valor 1 y además el CheckBox1 está marcado escribe ok en F1 'Pero esta condición solo se ejecuta si el CheckBox1 está activado 'Si quiero recorrer todo el rango y escribir ok en cada acierto: 'Worksheets("Hoja1").Range("f" & i).Value = "ok" Dim i As Integer For i = 1 To 100 If Worksheets("Hoja1").Range("c" & i).Value = 1 _ And Worksheets("Hoja1").CheckBox1.Value = True Then Worksheets("Hoja1").Range("f1").Value = "ok" End If Next i End Sub Sub buscar2() 'Caso 2, compara todos los Checkbox con en el rango C1:C100 'Ejemplo caso 1: si Ai = 1 y CheckBoxi = True entonces se escribe ok en Fi 'Ejemplo caso 2: si A1 y A3 = 1 y CheckBox1 y CheckBox3 = True entonces se escribe ok en G14 'El problema en el caso 1 es que no puedo asignarle i al nombre del CheckBox 'Y en el caso 2 tampoco sé como crear las distintas combinaciones entre cada una de las filas 'comprendidas en el rango C1:C100 con sus respectivos CheckBox 'sin escribir un millón de if 'Problema 1 con el caso 1 Dim i As Integer For i = 1 To 100 If Worksheets("Hoja1").Range("c" & i).Value = 1 _ And Worksheets("Hoja1").CheckBox(i).Value = True Then Worksheets("Hoja1").Range("f" & i).Value = "ok" End If Next i 'Problema 2 con el caso 2 If Worksheets("Hoja1").Range("c1").Value = 1 _ And Worksheets("Hoja1").CheckBox1.Value = True _ And Worksheets("Hoja1").Range("c2").Value = 1 _ And Worksheets("Hoja1").CheckBox2.Value = True Then Worksheets("Hoja1").Range("G14").Value = "ok" End If If Worksheets("Hoja1").Range("c1").Value = 1 _ And Worksheets("Hoja1").CheckBox1.Value = True _ And Worksheets("Hoja1").Range("c3").Value = 1 _ And Worksheets("Hoja1").CheckBox3.Value = True Then Worksheets("Hoja1").Range("G14").Value = "ok" End If 'CheckBox1 + CheckBox50, CheckBox14 + CheckBox25, CheckBox1 + CheckBox1 + CheckBox2 + CheckBox3 + CheckBox15 + CheckBox50 ....etc End Sub   demo.xlsm
    • Buenos días compañeros, @JSDJSD Estoy utilizando la solución que me prestaste en la empresa y me solucionaste la vida a parte de estar super contento, y he añadido muchas cosas más. Ahora me encuentro con otro problemilla que me gustaría añadir y no sé como implementarlo en tu codigo. Necesito que en el textbox se obligue a añadir un mínimo de 8 caracteres y un maximo de 17 y si no es correcto que se termine la macro. No sé si me explico. He intentado añadir este código pero creo que no sé implementarlo correctamente ya que pongas lo que pongas me salta que tengo que poner 8 caracteres mínimo.   If Val(TextBox1) < 8 Or Val(TextBox1) > 17 Then MsgBox "Rango invalido. Mínimo 8 caracteres. Gracias." Exit Sub End If   No sé si me podrías ayudar de nuevo. Gracias
    • Te he reestructurado un poco él código. Ya comentarás si quieres los combos ordenados y que se añada de forma automática al elegir de la lista. LLAVES.xlsm
    • Hola @gacg1310! Adjunto 2 opciones, la primera usando la función BUSCARV y una columna auxiliar; y la segunda usando funciones matriciales (se ingresan presionando Ctrl + Shift + Enter). La búsqueda la hice en base al número de cédula, ya que los datos de los nombres no son adecuados; para que sirvan, el nombre de cada persona debe escribirse igual en ambas tablas ("ANSELMO SALAMANCA MARTINEZ" no es lo mismo que "ANSELMO MARTINEZSALAMANCA"). Saludos! datos a traer.xlsx
    • Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 3 Then ' Si la celda cambiada petenece a la coluna 3 = "C", entramos ... Application.EnableEvents = False 'Desactivo eventos porque voy hacer cambios en las celdas .Offset(, -1) = Format(Now, "hh:mm") 'Ponemos la hora en la celda, una celda a la Izq, de la celda modificada ' que si estamos en "C" ==> "B" If Len(.Text) = 0 Then .Offset(, -1) = "" ' Evaluo : Sí En la celda cambiada no hay nada, elimino ' lo que hay en la celda una a la Izq Application.EnableEvents = True 'Activamos eventos End If End With End Sub Te dejo el código comentado para que el próximo cambio te lo puedas apañar tú. Saludos
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy