¿Como coloco el valor de una celda de otro archivo en mi archivo sin que aparezca cuadro de dialogo?

Anónimo
2025-03-15T00:03:15+00:00

Hola a todos.

Escribo para que por favor me ayuden con la siguiente inquietud.

Estoy colocando rutas de archivos de excel en mi excel y tengo que validar si el valor de las celdas de esas rutas tienen valor, los archivo estan cerrados y solo tengo abierto el archivo donde requiero la validación, he observado que no todos los archivos tienen el mismo nombre de hoja y eso me causa un conflicto. Estoy haciendo el proceso con vba en donde recorre las celdas con las rutas y por cada ruta le concateno el nombre de hoja que necesito, pero como el nombre de hoja no existe en la ruta que busco, excel me muetra una ventana de dialogo para que seleccione las hojas de la ruta y eso provoca que detenga mi macro y no termina el proceso. ¿Como hago para que no me muestre ese cuadro de dialogo? por favor. o ¿Como hago para validar el valor de la celda en la ruta que deseo sin pegarlo en una celda de excel para que no me lance la venta de dialogo?

La formula que uso en vba es la siguiente

mydata1 = "='\Cobog61ns1vf1\cobog_marsh4_vf4\Segmento EB\Operaciones EH&B Cali\EB CALI\CLARIOS ANDINA S.A.S\OPERACIONES\2025-2026\CLARIOS ANDINA S.A.S 1002643\ACUERDO OPERATIVO[ACUERDO OPERATIVO CLARIOS ANDINA CLARIOS PACIFICO 2024 - 2025.xlsx]Acuerdo Salud.'!R13C2"

este es el mensaje que me muestra

Gracias por su atención.

Por favor su ayuda.

Microsoft 365 y Office | Excel | Para el negocio | Otros

Pregunta bloqueada. Esta pregunta se migró desde la comunidad de soporte técnico de Microsoft. Puedes votar si te parece útil, pero no puedes agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios
Respuesta aceptada por el autor de la pregunta
Héctor Miguel 71,595 Puntos de reputación
2025-03-18T03:12:38+00:00

disculparas 'el rollo' (pero lo que pides no es 'enchilame otra' 😁)

  1. al procedimiento debes proveerle la ruta completa del archivo que necesites analizar

desde aqui: \Cobog61ns1vf1\

hasta el .xlsx

SIN el apostrofo inicial y SIN los corchetes

  1. analizara una lista con los nombres de las hojas contenidas en ese archivo (SIN abrirlo -en excel-)
  2. por la misma razon, tu procedimiento NO podra ser secuencial automatico

3.a) debes estar atento a seleccionar alguna hoja de la lista real de cada archivo)

3.b) O... (si lo prefieres) preguntar SOLO por una hoja en especifico, y si NO existe... 'el que sigue' ?

  1. asumiendo que tienes una lista de archivos (y hojas requeridas)

4.a) una columna puede ser la ruta (completa) hasta el nombre del archivo (punto 1)

4.b) otra columna contendra (solo) el nombre de la hoja requerida

  1. este procedimiento comprueba si la hoja buscada existe (3.b):

lo deberas copiar > pegar (o escribir) en un modulo de codigo estandar:

Function buscaHojaEnLibroCerrado(archivo As String, hoja As String) As Boolean

' UDF para comprobar nombres de hojas de calculo en libros cerrados ' _

  I+D: Héctor Miguel Orozco Díaz © ® ™ (Junio de 2007) ' _

  TRANSCRIBE ESTO cuando lo reproduzcas (by GNU/GPL -Generic Public License-) ' _

  => bajo cualquier ajuste, enmienda o personalizacion <= '

  Dim tabla As Object, chk As String, existe As Boolean: existe = False

  With CreateObject("adox.catalog")

    .ActiveConnection = "provider=msdasql.1;data source=excel files;initial catalog=" & archivo

    For Each tabla In .Tables: chk = Replace(tabla.Name, "'", "")

      If LCase(chk) = LCase(hoja) & "$" Then existe = True: Exit For

    Next: End With: buscaHojaEnLibroCerrado = existe: End Function
  1. dentro de tu procedimiento debes incluir en un bucle la UDF (p.ej.) If buscaHojaEnLibroCerrado(celda_ruta, celda_hoja) Then
     ' aqui las acciones en caso de que la hoja buscada SI exista ... '
    
    End If

¿Le resultó útil esta respuesta?

1 persona encontró esta respuesta útil.
0 comentarios No hay comentarios

3 respuestas adicionales

Ordenar por: Lo más útil
  1. Héctor Miguel 71,595 Puntos de reputación
    2025-03-15T02:36:09+00:00

    este es el mensaje que me muestra ...

    1. cualquier formula que deposites en celdas (desde la interfaz con el usuario o por vba)...

    si haces referencia a objetos que NO se pueden encontrar (o no existen ?)

    no puedes evitar que excel se la pase preguntando por los objetos correctos

    (ruta > nombre del archivo > hoja > nombre/rango/referencia)

    1. si intentas un proceso secuencial (vba) pero NO sabes de cualquiera de esos objetos ?

    necesitas de otro procedimiento que averigue su existencia ANTES de proceder con la secuencia

    1. para el segundo caso (segun tu ejemplo) existen 'puntos' que pueden interferir con el proceso

    (por puntos me refiero a los puntos -literalmente- durante la ruta completa)

    1. extras:

    a) me parece excesiva la repeticion de algunos textos durante el curso de la ruta

    • (operaciones, acuerdo, operativo, clarios andina, etc.)

    b) si no has modificado el registro de windows, puedes alcanzar/rebasar un limite en el largo de la ruta completa

    por donde quieres seguir ?

    ¿Le resultó útil esta respuesta?

    1 persona encontró esta respuesta útil.
    0 comentarios No hay comentarios
  2. Anónimo
    2025-03-18T03:48:24+00:00

    Señor Hector muchas gracias por su apoyo. Fue muy amable. Una solución como la que me ofreciste es la que estaba buscando. Muchas gracias. Me sirvió.

    ¿Le resultó útil esta respuesta?

    0 comentarios No hay comentarios
  3. Anónimo
    2025-03-17T15:12:19+00:00

    Gracias por responder. En vista de que no se puede quitar el cuadro de dialogo mi pregunta es con respecto a tu 2 punto. ¿Que procedimiento puedo hacer para saber si existe una hoja en un archivo cerrado antes de proceder con la secuencia?.

    Porque lo que mas me insteresa es saber si la hoja que busco existe o no antes de continuar con la secuencia pero necesito hacerlo con el archivo cerrado. ya que abierto se demoraria mucho el proceso.

    Con respecto al punto 4 el nombre de los archivos que busco vienen con esa estructura porque estan ubicados en un servidor donde se pueden compartir carpetas y archivos.

    Gracias por tu atención.

    ¿Le resultó útil esta respuesta?

    0 comentarios No hay comentarios