Macro para cambiar un vínculo

06/07/2005 - 05:16 por Gaditano | Informe spam
Holas !!!
¿Tenéis alguna macro para cambiar el origen de un vínculo?

Vale, Gracias

Preguntas similare

Leer las respuestas

#6 Gaditano
07/07/2005 - 01:25 | Informe spam
Hola KL,
Creo que me voy a ir con la opción 3 de las que me ofrecís. Es la que mejor
va a mis requerimientos.
Un gran saludo.
Sois un tío genial.

"KL" escribió en el mensaje
news:
Hola Gaditano,

> ¿Que cambios sugerís al código si los archivos que se quiere vincular se
> encuentran en otra carpeta, diferente a la que contiene el archivo con


la
> funcion buscarv?

1) Si la direccion de la carpeta es siempre la misma, podrias sustituir la
instruccion:

Ruta = .Path

por algo como lo siguiente:

Ruta = "C:\Documents and Settings\Gaditano\My Documents"

2) Si no, podrias usar la funcion o el metodo InputBox

Ruta = InputBox("Introduzca la ruta: ")

o bien:

Ruta = Application.InputBox("Introduzca la ruta: ")

3) tambien podrias pedir al usuario que introduzca la ruta completa en
alguna celda, digamos [B1] y luego hacer algo asi:

Ruta = .ActiveSheet.Range("B1").Value

4) podrias incluso llamar el dialogo Abrir Archivo usando el metodo
GetOpenFileName para seleccionar el archivo en cuestion. Revisa este
ejemplo:

Sub Macro1()
Dim NomArchivo As Variant
With ThisWorkbook
NomArchivo = Application _
.GetOpenFilename("Archivos Excel (*.xls), *.xls")
If NomArchivo <> False Then
NomArchivo = Replace(NomArchivo, _
Dir(NomArchivo), "[" & Dir(NomArchivo) & "]")
For x = 4 To 15
.ActiveSheet.Range("B" & x).FormulaR1C1 = _
"=VLOOKUP(RC[-1],'" & NomArchivo _
& "Hoja1'!R1C1:R12C2,2,0)"
Next x
End If
End With
End Sub

Saludos,
KL


Respuesta Responder a este mensaje
#7 KL
07/07/2005 - 01:40 | Informe spam
Hola Gaditano,

Si te decantas por la solucion numero 3, te diria que casi es mejor usar la
4 ya que esta ultima hace lo mismo pero no deja lugar a los posibles errores
que se producen al escribir las rutas en la celda. Si quieres que la ruta
tambien te aparezca en la hoja en la solucion 4, podrias incluir una pequena
instruccion adicional:

Sub Macro1()
Dim NomArchivo As Variant
With ThisWorkbook
NomArchivo = Application _
.GetOpenFilename("Archivos Excel (*.xls), *.xls")
If NomArchivo <> False Then
.ActiveSheet.Range("B1").Value=NomArchivo
NomArchivo = Replace(NomArchivo, _
Dir(NomArchivo), "[" & Dir(NomArchivo) & "]")
For x = 4 To 15
.ActiveSheet.Range("B" & x).FormulaR1C1 = _
"=VLOOKUP(RC[-1],'" & NomArchivo _
& "Hoja1'!R1C1:R12C2,2,0)"
Next x
End If
End With
End Sub

Saludos,
KL

"Gaditano" wrote in message
news:
Hola KL,
Creo que me voy a ir con la opción 3 de las que me ofrecís. Es la que
mejor
va a mis requerimientos.
Un gran saludo.
Sois un tío genial.

"KL" escribió en el mensaje
news:
Hola Gaditano,

> ¿Que cambios sugerís al código si los archivos que se quiere vincular
> se
> encuentran en otra carpeta, diferente a la que contiene el archivo con


la
> funcion buscarv?

1) Si la direccion de la carpeta es siempre la misma, podrias sustituir
la
instruccion:

Ruta = .Path

por algo como lo siguiente:

Ruta = "C:\Documents and Settings\Gaditano\My Documents"

2) Si no, podrias usar la funcion o el metodo InputBox

Ruta = InputBox("Introduzca la ruta: ")

o bien:

Ruta = Application.InputBox("Introduzca la ruta: ")

3) tambien podrias pedir al usuario que introduzca la ruta completa en
alguna celda, digamos [B1] y luego hacer algo asi:

Ruta = .ActiveSheet.Range("B1").Value

4) podrias incluso llamar el dialogo Abrir Archivo usando el metodo
GetOpenFileName para seleccionar el archivo en cuestion. Revisa este
ejemplo:

Sub Macro1()
Dim NomArchivo As Variant
With ThisWorkbook
NomArchivo = Application _
.GetOpenFilename("Archivos Excel (*.xls), *.xls")
If NomArchivo <> False Then
NomArchivo = Replace(NomArchivo, _
Dir(NomArchivo), "[" & Dir(NomArchivo) & "]")
For x = 4 To 15
.ActiveSheet.Range("B" & x).FormulaR1C1 = _
"=VLOOKUP(RC[-1],'" & NomArchivo _
& "Hoja1'!R1C1:R12C2,2,0)"
Next x
End If
End With
End Sub

Saludos,
KL






Respuesta Responder a este mensaje
#8 Gaditano
07/07/2005 - 02:16 | Informe spam
Hola KL,
Muy interesante tu observación. Voy a acogerla si me ayudais con unos
pequeños cambios:
1) Sí, quiero que la ruta aparezca en la hoja, pero sólo la ruta, sin
incluir el nombre del archivo.
2) Si la ruta del nuevo vínculo es la misma que aparece en la hoja, que no
muestre el dialogo Abrir Archivo, sino que se ejecute de inmediato.

Tal vez sea mejor ir por otro lado: llamar el dialogo Abrir Archivo para
cambiar el nombre en la celda A1 en lugar de escribirlo, y que la macro
traspase el nombre del archivo en A1 y la ruta en B1. Digo, siguiendo tu
mismo consejo para evitar errores de escritura.

"KL" escribió en el mensaje
news:
Hola Gaditano,

Si te decantas por la solucion numero 3, te diria que casi es mejor usar


la
4 ya que esta ultima hace lo mismo pero no deja lugar a los posibles


errores
que se producen al escribir las rutas en la celda. Si quieres que la ruta
tambien te aparezca en la hoja en la solucion 4, podrias incluir una


pequena
instruccion adicional:

Sub Macro1()
Dim NomArchivo As Variant
With ThisWorkbook
NomArchivo = Application _
.GetOpenFilename("Archivos Excel (*.xls), *.xls")
If NomArchivo <> False Then
.ActiveSheet.Range("B1").Value=NomArchivo
NomArchivo = Replace(NomArchivo, _
Dir(NomArchivo), "[" & Dir(NomArchivo) & "]")
For x = 4 To 15
.ActiveSheet.Range("B" & x).FormulaR1C1 = _
"=VLOOKUP(RC[-1],'" & NomArchivo _
& "Hoja1'!R1C1:R12C2,2,0)"
Next x
End If
End With
End Sub

Saludos,
KL

"Gaditano" wrote in message
news:
> Hola KL,
> Creo que me voy a ir con la opción 3 de las que me ofrecís. Es la que
> mejor
> va a mis requerimientos.
> Un gran saludo.
> Sois un tío genial.
>
> "KL" escribió en el mensaje
> news:
>> Hola Gaditano,
>>
>> > ¿Que cambios sugerís al código si los archivos que se quiere vincular
>> > se
>> > encuentran en otra carpeta, diferente a la que contiene el archivo


con
> la
>> > funcion buscarv?
>>
>> 1) Si la direccion de la carpeta es siempre la misma, podrias sustituir
>> la
>> instruccion:
>>
>> Ruta = .Path
>>
>> por algo como lo siguiente:
>>
>> Ruta = "C:\Documents and Settings\Gaditano\My Documents"
>>
>> 2) Si no, podrias usar la funcion o el metodo InputBox
>>
>> Ruta = InputBox("Introduzca la ruta: ")
>>
>> o bien:
>>
>> Ruta = Application.InputBox("Introduzca la ruta: ")
>>
>> 3) tambien podrias pedir al usuario que introduzca la ruta completa en
>> alguna celda, digamos [B1] y luego hacer algo asi:
>>
>> Ruta = .ActiveSheet.Range("B1").Value
>>
>> 4) podrias incluso llamar el dialogo Abrir Archivo usando el metodo
>> GetOpenFileName para seleccionar el archivo en cuestion. Revisa este
>> ejemplo:
>>
>> Sub Macro1()
>> Dim NomArchivo As Variant
>> With ThisWorkbook
>> NomArchivo = Application _
>> .GetOpenFilename("Archivos Excel (*.xls), *.xls")
>> If NomArchivo <> False Then
>> NomArchivo = Replace(NomArchivo, _
>> Dir(NomArchivo), "[" & Dir(NomArchivo) & "]")
>> For x = 4 To 15
>> .ActiveSheet.Range("B" & x).FormulaR1C1 = _
>> "=VLOOKUP(RC[-1],'" & NomArchivo _
>> & "Hoja1'!R1C1:R12C2,2,0)"
>> Next x
>> End If
>> End With
>> End Sub
>>
>> Saludos,
>> KL
>>
>>
>
>


Respuesta Responder a este mensaje
#9 kikead
19/09/2012 - 10:34 | Informe spam
KL escribió el 07/07/2005 00:59 :
Hola Gaditano,

¿Que cambios sugerís al código si los archivos que se
quiere vincular se
encuentran en otra carpeta, diferente a la que contiene el archivo con la
funcion buscarv?




1) Si la direccion de la carpeta es siempre la misma, podrias sustituir la
instruccion:

Ruta = .Path

por algo como lo siguiente:

Ruta = "C:Documents and SettingsGaditanoMy Documents"

2) Si no, podrias usar la funcion o el metodo InputBox

Ruta = InputBox("Introduzca la ruta: ")

o bien:

Ruta = Application.InputBox("Introduzca la ruta: ")

3) tambien podrias pedir al usuario que introduzca la ruta completa en
alguna celda, digamos [B1] y luego hacer algo asi:

Ruta = .ActiveSheet.Range("B1").Value

4) podrias incluso llamar el dialogo Abrir Archivo usando el metodo
GetOpenFileName para seleccionar el archivo en cuestion. Revisa este
ejemplo:

Sub Macro1()
Dim NomArchivo As Variant
With ThisWorkbook
NomArchivo = Application _
.GetOpenFilename("Archivos Excel (*.xls), *.xls")
If NomArchivo <> False Then
NomArchivo = Replace(NomArchivo, _
Dir(NomArchivo), "[" & Dir(NomArchivo) & "]")
For x = 4 To 15
.ActiveSheet.Range("B" & x).FormulaR1C1 = _
"=VLOOKUP(RC[-1],'" & NomArchivo _
& "Hoja1'!R1C1:R12C2,2,0)"
Next x
End If
End With
End Sub

Saludos,
KL


Hola, en el caso que deseo hacer una macro parecida pero en word, es decir que tengo pegadas algunas tablas vinculadas a un archivo de excel y deseo cambiar el archivo de origen con una macro, como lo hago?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida