Vinculos en Excel

20/11/2008 - 01:04 por Moises | Informe spam
Tengo un archivo llamado Global, y n archivos llamados RE-001 hasta R-100 de
donde se extrae la información, cada archivo RE-XXX se llena cuando se genera
un reporte por incidencias(en este momento tengo hasta RE-020). A su vez el
archivo Global tiene una estructura muy basica de referencias a ciertas
celdas para cara reporte RE-XXX.

Acaban de instalar Excel 2003 y ahora cada vez que abro Global.xls me
aparece una ventana preguntando si quiere actualizar los vinculos, y si le
digo que si me aparece otra ventana diciendo que no pudo encontrar ciertos
archivos de origen (que corresponden a los reportes RE-021 hasta RE-100).

Pude evitar las preguntas al abrir Global.xls, configurando las opciones de
los vinculos para que no se actualicen al abrir el libro, luego trate de
armar una macro con updatelink y linksources, para actualizar todos los
vinculos en el libro pero me marca error cuando encuentra un vinculo para
RE-021.

La pregunta basicamente es: ¿Puedo evitar que excel me pregunte por la
ubicacion del archivo en caso de que no exista y que en ese momento se
interrumpa la macro, con la idea de solo actualizar hasta el RE-XXX
disponible en su momento ?

Creo que puede ser muy sencillo, pero al momento no puedo resolverlo

Gracias por la valiosa ayuda
Moises

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
20/11/2008 - 01:45 | Informe spam
hola, Moises !

1) no me queda claro si las versiones anteriores a 2003 NO te preguntaban por algun vinculo "inexistente" (o movido) -???-

2) una alternativa para tu macro es que antes de inciar la actualizacion de los vinculos del libro
es usar la instruccion On Error Resume Next (a reserva de "ver" lo que hace la macro y como)

3) o podrias analizar vinculo a vinculo si existe (p.e. usando la instruccion If Dir("ubicacion del vinculo") <> "" Then <actualiza>)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __
Tengo un archivo llamado Global, y n archivos llamados RE-001 hasta R-100 de donde se extrae la informacion
cada archivo RE-XXX se llena cuando se genera un reporte por incidencias (en este momento tengo hasta RE-020).
A su vez el archivo Global tiene una estructura muy basica de referencias a ciertas celdas para cara reporte RE-XXX.

Acaban de instalar Excel 2003 y ahora cada vez que abro Global.xls me aparece una ventana preguntando si quiere actualizar los vinculos
y si le digo que si me aparece otra ventana diciendo que no pudo encontrar ciertos archivos de origen
(que corresponden a los reportes RE-021 hasta RE-100).

Pude evitar las preguntas al abrir Global.xls, configurando las opciones de los vinculos para que no se actualicen al abrir el libro
luego trate de armar una macro con updatelink y linksources, para actualizar todos los vinculos en el libro
pero me marca error cuando encuentra un vinculo para RE-021.

La pregunta basicamente es: Puedo evitar que excel me pregunte por la ubicacion del archivo en caso de que no exista
y que en ese momento se interrumpa la macro, con la idea de solo actualizar hasta el RE-XXX disponible en su momento ?

Creo que puede ser muy sencillo, pero al momento no puedo resolverlo...
Respuesta Responder a este mensaje
#2 Moises
20/11/2008 - 16:56 | Informe spam
¡¡Hola Hector!!

Gracias por tomarte el tiempo...

1) Así es, anteriormente no me preguntaba, solo se abria el archivo y se
actualizaba en automatico si encontraba que actualizar, de otro modo se
quedaba callado por decirlo de alguna manera.

2) La macro es la siguiente...

Sub Macro1()
alinks = ActiveWorkbook.LinkSources
If Not IsEmpty(alinks) Then
For i = 1 To UBound(alinks)
ActiveWorkbook.UpdateLink (alinks)
Next i
End If
End Sub

¿Cómo podria adaptar tu idea de On Error Resume Next a la macro ?

Y me surge una duda, desactivé la actualización de los vinculos desde
Edicion->Vinculos, es esto una buena practica o es mejor cancelar la
actualización desde codigo al abrir el archivo, lo comento porque el archivo
final sera manipulado por varias personas

3) Igual no tengo idea como adaptar el codigo para trabajar esta idea, sin
embargo a primera vista parece una solucion mas larga, por lo que me gustaria
explorar tu idea en 2) =)

Gracias nuevamente, saludos desde Queretaro, Mx
Moises

"Héctor Miguel" wrote:

hola, Moises !

1) no me queda claro si las versiones anteriores a 2003 NO te preguntaban por algun vinculo "inexistente" (o movido) -???-

2) una alternativa para tu macro es que antes de inciar la actualizacion de los vinculos del libro
es usar la instruccion On Error Resume Next (a reserva de "ver" lo que hace la macro y como)

3) o podrias analizar vinculo a vinculo si existe (p.e. usando la instruccion If Dir("ubicacion del vinculo") <> "" Then <actualiza>)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __
> Tengo un archivo llamado Global, y n archivos llamados RE-001 hasta R-100 de donde se extrae la informacion
> cada archivo RE-XXX se llena cuando se genera un reporte por incidencias (en este momento tengo hasta RE-020).
> A su vez el archivo Global tiene una estructura muy basica de referencias a ciertas celdas para cara reporte RE-XXX.
>
> Acaban de instalar Excel 2003 y ahora cada vez que abro Global.xls me aparece una ventana preguntando si quiere actualizar los vinculos
> y si le digo que si me aparece otra ventana diciendo que no pudo encontrar ciertos archivos de origen
> (que corresponden a los reportes RE-021 hasta RE-100).
>
> Pude evitar las preguntas al abrir Global.xls, configurando las opciones de los vinculos para que no se actualicen al abrir el libro
> luego trate de armar una macro con updatelink y linksources, para actualizar todos los vinculos en el libro
> pero me marca error cuando encuentra un vinculo para RE-021.
>
> La pregunta basicamente es: Puedo evitar que excel me pregunte por la ubicacion del archivo en caso de que no exista
> y que en ese momento se interrumpa la macro, con la idea de solo actualizar hasta el RE-XXX disponible en su momento ?
>
> Creo que puede ser muy sencillo, pero al momento no puedo resolverlo...



Respuesta Responder a este mensaje
#3 Héctor Miguel
21/11/2008 - 01:46 | Informe spam
hola, Moises !

(creo que) podrias utilizar algo +/- como la siguiente macro (aprovechando que desactivaste la actualizacion automatica)...

Sub Actualizar_Vinculos()
Dim Vinculos, n As Byte, v As Byte, x As Byte
Vinculos = ActiveWorkbook.LinkSources(xlExcelLinks)
If IsEmpty(Vinculos) Then Exit Sub Else v = UBound(Vinculos)
For x = 1 To v
If Dir(Vinculos(x)) <> "" Then _
ActiveWorkbook.UpdateLink Vinculos(x): n = n + 1
Next
MsgBox "Se actualizaron " & n & " de " & v & " vinculos externos !"
End Sub

si tu archivo sera manejado por diversas personas, decide si lo dejas como macro solitaria (a voluntad/necesidad)...
o la dejas (o incluyes) desde la apertura del archivo (p.e. llamandola desde el evento '_open' del ThisWorkbook) -?-

saludos,
hector.

__ OP __
2) La macro es la siguiente...
Sub Macro1()
alinks = ActiveWorkbook.LinkSources
If Not IsEmpty(alinks) Then
For i = 1 To UBound(alinks)
ActiveWorkbook.UpdateLink (alinks)
Next i
End If
End Sub

Como podria adaptar tu idea de On Error Resume Next a la macro ?
Respuesta Responder a este mensaje
#4 Moises
24/11/2008 - 16:41 | Informe spam
Que tal Hector, corrí la macro que me proporcionaste esta semana y quedo
perfecta, la parte que me estaba fallando era identificar cuando un vinculo
no existia, ya que con mi macro siempre me botaba la pantalla de actualizar
vinculos, donde te pide la ruta del archivo vinculado.

Muchisimas gracias, nos leemos en la proxima asesoria =) !
Respuesta Responder a este mensaje
#5 Jose Luis
29/11/2008 - 23:14 | Informe spam
jesus garcia hola:
estoy cursando una prueba de excel
"Moises" escribió en el mensaje
news:
Que tal Hector, corrí la macro que me proporcionaste esta semana y quedo
perfecta, la parte que me estaba fallando era identificar cuando un
vinculo
no existia, ya que con mi macro siempre me botaba la pantalla de
actualizar
vinculos, donde te pide la ruta del archivo vinculado.

Muchisimas gracias, nos leemos en la proxima asesoria =) !


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida