Hacer Referencias a los vinculos en el Código

16/11/2007 - 10:22 por Thebigmik | Informe spam
Hola,

quiero cambiar un vínculo en código, uso el metodo ChangeLink
pero quiero que el usuario lo elija de una ventana exploradora, eso lo
consigo poniendo un nombre de vinculo erroneo como destino.

ActiveWorkbook.ChangeLink "C:\VinculoDeOrigen.xls", "C:
\VinculoErroneo.xls", xlExcelLinks
'Hace saltar una ventana para examinar

cuando se selecciona el vinculo da su ruta correctamente, pero el
nombre del vínculo ahora es "C:\VinculoErroneo.xls" aunque su ruta sea
otra, por ejemplo "C:\Datos_A_Vincular\VinculoCorrecto.xls"

El problema que ocurre es que no encuentro forma de recoger la ruta
del vinculo desde el codigo, siempre recogo el nombre y mi deseo final
es asociar otro vínculo a ese vínculo para que contengan la misma
ruta.

Me parece que los vinculos no se pueden tratar como objetos ¿no?

Introduzco todos los vínculos en un array, pero la verdad es que no me
sirve de mucho
Alinks = ActiveWorkbook.LinkSources(xlExcelLinks)
For i = 1 To UBound(Alinks)

Next i

Voy a intentar simplificar el problema ... lo que quiero es capturar
la ruta de un vinculo para asociarselo a otro, si no se puede hacer
así si alguien tiene otro forma de atacar este problema.

Gracias y perdón por todo el lio

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
17/11/2007 - 05:05 | Informe spam
hola, (...) ?

si lo (unico) que necesitas es "enterarte" de cual ha sido la seleccion del usuario para cambiar varios vinculos
prueba con el metodo GetOpenFileName que "simula" una apertura de archivos pero solo devuelve la ruta completa (p.e.)

Dim Vinculo_Nuevo As String
Vinculo_Nuevo = Application.GetOpenFilename( _
"Archivos de excel (*.xls), *.xls", , "Selecciona el vinculo correcto !")
If Dir(Vinculo_Nuevo) = "" Then MsgBox "Operacion cancelada !!!": Exit Sub
MsgBox "Puedes usar este archivo para modiicar tus vinculos:" & vbCr & Vinculo_Nuevo

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

__ la consulta original __
quiero cambiar un vinculo en codigo, uso el metodo ChangeLink
pero quiero que el usuario lo elija de una ventana exploradora
eso lo consigo poniendo un nombre de vinculo erroneo como destino.
ActiveWorkbook.ChangeLink "C:\VinculoDeOrigen.xls", "C:\VinculoErroneo.xls", xlExcelLinks
'Hace saltar una ventana para examinar
cuando se selecciona el vinculo da su ruta correctamente, pero el nombre del vinculo ahora es "C:\VinculoErroneo.xls"
aunque su ruta sea otra, por ejemplo "C:\Datos_A_Vincular\VinculoCorrecto.xls"
El problema que ocurre es que no encuentro forma de recoger la ruta del vinculo desde el codigo
siempre recogo el nombre y mi deseo final es asociar otro vínculo a ese vínculo para que contengan la misma ruta.
Me parece que los vinculos no se pueden tratar como objetos no?
Introduzco todos los vínculos en un array, pero la verdad es que no me sirve de mucho
Alinks = ActiveWorkbook.LinkSources(xlExcelLinks)
For i = 1 To UBound(Alinks)

Next i
Voy a intentar simplificar el problema ... lo que quiero es capturar la ruta de un vinculo
para asociarselo a otro, si no se puede hacer asi si alguien tiene otro forma de atacar este problema.
Respuesta Responder a este mensaje
#2 Thebigmik
19/11/2007 - 09:02 | Informe spam
On 17 nov, 05:05, "Héctor Miguel"
wrote:
hola, (...) ?

si lo (unico) que necesitas es "enterarte" de cual ha sido la seleccion del usuario para cambiar varios vinculos
prueba con el metodo GetOpenFileName que "simula" una apertura de archivos pero solo devuelve la ruta completa (p.e.)

Dim Vinculo_Nuevo As String
Vinculo_Nuevo = Application.GetOpenFilename( _
"Archivos de excel (*.xls), *.xls", , "Selecciona el vinculo correcto !")
If Dir(Vinculo_Nuevo) = "" Then MsgBox "Operacion cancelada !!!": Exit Sub
MsgBox "Puedes usar este archivo para modiicar tus vinculos:" & vbCr & Vinculo_Nuevo

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

__ la consulta original __



> quiero cambiar un vinculo en codigo, uso el metodo ChangeLink
> pero quiero que el usuario lo elija de una ventana exploradora
> eso lo consigo poniendo un nombre de vinculo erroneo como destino.
> ActiveWorkbook.ChangeLink "C:\VinculoDeOrigen.xls", "C:\VinculoErroneo.xls", xlExcelLinks
> 'Hace saltar una ventana para examinar
> cuando se selecciona el vinculo da su ruta correctamente, pero el nombre del vinculo ahora es "C:\VinculoErroneo.xls"
> aunque su ruta sea otra, por ejemplo "C:\Datos_A_Vincular\VinculoCorrecto.xls"
> El problema que ocurre es que no encuentro forma de recoger la ruta del vinculo desde el codigo
> siempre recogo el nombre y mi deseo final es asociar otro vínculo a ese vínculo para que contengan la misma ruta.
> Me parece que los vinculos no se pueden tratar como objetos no?
> Introduzco todos los vínculos en un array, pero la verdad es que no me sirve de mucho
> Alinks = ActiveWorkbook.LinkSources(xlExcelLinks)
> For i = 1 To UBound(Alinks)

> Next i
> Voy a intentar simplificar el problema ... lo que quiero es capturar la ruta de un vinculo
> para asociarselo a otro, si no se puede hacer asi si alguien tiene otro forma de atacar este problema.- Ocultar texto de la cita -

- Mostrar texto de la cita -



Ahhhggg, se me olvido que podia usar el FSO, gracias Hector
Respuesta Responder a este mensaje
#3 Thebigmik
19/11/2007 - 12:32 | Informe spam
On 19 nov, 09:02, Thebigmik wrote:
On 17 nov, 05:05, "Héctor Miguel"
wrote:





> hola, (...) ?

> si lo (unico) que necesitas es "enterarte" de cual ha sido la seleccion del usuario para cambiar varios vinculos
> prueba con el metodo GetOpenFileName que "simula" una apertura de archivos pero solo devuelve la ruta completa (p.e.)

> Dim Vinculo_Nuevo As String
> Vinculo_Nuevo = Application.GetOpenFilename( _
> "Archivos de excel (*.xls), *.xls", , "Selecciona el vinculo correcto !")
> If Dir(Vinculo_Nuevo) = "" Then MsgBox "Operacion cancelada !!!": Exit Sub
> MsgBox "Puedes usar este archivo para modiicar tus vinculos:" & vbCr & Vinculo_Nuevo

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

> __ la consulta original __

> > quiero cambiar un vinculo en codigo, uso el metodo ChangeLink
> > pero quiero que el usuario lo elija de una ventana exploradora
> > eso lo consigo poniendo un nombre de vinculo erroneo como destino.
> > ActiveWorkbook.ChangeLink "C:\VinculoDeOrigen.xls", "C:\VinculoErroneo.xls", xlExcelLinks
> > 'Hace saltar una ventana para examinar
> > cuando se selecciona el vinculo da su ruta correctamente, pero el nombre del vinculo ahora es "C:\VinculoErroneo.xls"
> > aunque su ruta sea otra, por ejemplo "C:\Datos_A_Vincular\VinculoCorrecto.xls"
> > El problema que ocurre es que no encuentro forma de recoger la ruta del vinculo desde el codigo
> > siempre recogo el nombre y mi deseo final es asociar otro vínculo a ese vínculo para que contengan la misma ruta.
> > Me parece que los vinculos no se pueden tratar como objetos no?
> > Introduzco todos los vínculos en un array, pero la verdad es que no me sirve de mucho
> > Alinks = ActiveWorkbook.LinkSources(xlExcelLinks)
> > For i = 1 To UBound(Alinks)

> > Next i
> > Voy a intentar simplificar el problema ... lo que quiero es capturar la ruta de un vinculo
> > para asociarselo a otro, si no se puede hacer asi si alguien tiene otro forma de atacar este problema.- Ocultar texto de la cita -

> - Mostrar texto de la cita -

Ahhhggg, se me olvido que podia usar el FSO, gracias Hector- Ocultar texto de la cita -

- Mostrar texto de la cita -



¿Como se le ponia a la ventana una ruta determinada de busqueda?

Gracias
Respuesta Responder a este mensaje
#4 Héctor Miguel
19/11/2007 - 23:10 | Informe spam
hola, (...) ?

Ahhhggg, se me olvido que podia usar el FSO...
Como se le ponia a la ventana una ruta determinada de busqueda?



pues... no es (precisamente) lo mismo que usar los FSO
el metodo getopenflename es mas sencillo ya que no requiere el uso de variables/objetos (fso)
pero, solo trabaja con el directorio activo, aunque puedes establecerlo lineas antes (p.e.)

si te cambias a otro directorio en la unidad actual:
ChDir "aqui la ruta que nececitas"
' ahora si... usa el metodo getopenfilename ' ;)

si te cambias a otro directorio en otra unidad, primero cambias la unidad:
ChDrive "e:"
ChDir "aqui la ruta en la otra unidad"
' ahora si... usa el metodo getopenfilename ' ;)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#5 Thebigmik
20/11/2007 - 12:53 | Informe spam
On 19 nov, 23:10, "Héctor Miguel"
wrote:
hola, (...) ?

> Ahhhggg, se me olvido que podia usar el FSO...
> Como se le ponia a la ventana una ruta determinada de busqueda?

pues... no es (precisamente) lo mismo que usar los FSO
el metodo getopenflename es mas sencillo ya que no requiere el uso de variables/objetos (fso)
pero, solo trabaja con el directorio activo, aunque puedes establecerlo lineas antes (p.e.)

si te cambias a otro directorio en la unidad actual:
ChDir "aqui la ruta que nececitas"
' ahora si... usa el metodo getopenfilename ' ;)

si te cambias a otro directorio en otra unidad, primero cambias la unidad:
ChDrive "e:"
ChDir "aqui la ruta en la otra unidad"
' ahora si... usa el metodo getopenfilename ' ;)

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



Perfecto, gracias. No debe de haber problemas con rutas en la red,
¿no?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida