Ayuda para actualizar datos en libro remoto mediante VB

24/06/2004 - 17:17 por Rantamplan | Informe spam
Hola de nuevo, despues de leer acerca de como vincular datos pertenecientes
a diferentes libros que se encuentran en diferentes pc's, os paso a
formular mi problema por si alguno puede echarme una mano:

Tengo un pc (A) que todos los dias genera un informe en excel con el
siguiente formato: 24062004.xls (es la fecha del dia actual en formato
ddmmyyyy).

Tengo otro pc (B) con un informe realizado en excel que necesita recopilar
datos de ciertas celdas de A. Por ejemplo necesito saber los valores
actuales de las celdas A1,A2,A3 (ojo! digo los valores actuales pq como
cada dia se genera un archivo distinto, necesito que siempre vaya a
consultar el mas reciente!).

Medio peleandome con el vb que trae excel he llegado a realizar esta
'cutre-macro' :

-
Dim fecha_remota, hoy
Dim archivo_origen, archivo_remoto

hoy = Mid(Now, 1, 2) + Mid(Now, 4, 2) + Mid(Now, 7, 4)

archivo_remoto = "m:\" + Mid(Now, 1, 2) + Mid(Now, 4, 2) + Mid(Now, 7,
4) + ".xls"
fecha_remota = Mid(archivo_remoto, 4, 8)
If hoy = fecha_remota Then
.ActiveWorkbook.ActiveSheet.Select
.Goto reference:=.Range("a1")
.Selection =('"M:\"+fecha_remota+".xls"libro1'!A1) 'NO FUNCIONA¿?
Else
ActiveSheet.Range("a1").Value = "error, no se encuentra el dato"
End If
-

El archivo de A (el local) se llama: c:\informe.xls
El archivo de B (el remoto) se llama: m:\24062004.xls

Socorroooooo!! por favor, a ver si alguien me ilumina ;-)
 

Leer las respuestas

#1 Héctor Miguel
27/06/2004 - 04:30 | Informe spam
¿que tal, chicos?

Rantamplan escribio en el mensaje
... vincular datos pertenecientes a diferentes libros que se encuentran en diferentes pc's [...]
... pc (A) que todos los dias genera un informe en excel con el ... formato: 24062004.xls [...]
... pc (B) con un informe ... que necesita recopilar ... de ciertas celdas de A.
... saber los valores actuales de las celdas A1,A2,A3
(ojo! digo los valores actuales ... cada dia se genera un archivo ... siempre ... consultar el mas reciente!)
... peleandome con el vb ... he llegado a realizar esta 'cutre-macro' [... sigue macro ...]

David Canales escribio en el mensaje
... mas practico, en vez de hacer una macro ... lo siguiente [...]
- Escribe en la celda F1 (o la de tu preferencia) [...]
- En F2 [...]
- En F3 [...]
- En F4 [...]
- En F5 [...]
... vamos a usar ... indirect.ext ... al instalar un add-in ... que tiene 41 funciones adicionales [...]
- ... en la celda F9 escribe =indirect.ext(F5, false) [...]





1° ciertamente que el complemento tiene 40+ funciones muy 'utiles' [todas, pero... NO 'de uso frecuente' :(]
2° [me parece que...] son 'muchos pasos' =>para cada celda<= que se quiera 'vincular' :((
[Rantamplan 'ejemplifico' -solamente- 3, pero... ¿y si fueran 100 o mas???]
3° [creo yo que...] en 'este' caso... si resulta mas 'conveniente' usar macros [expongo un ejemplo al final] ;)
4° =>David Canales<=: disculpame [si llegara a parecerte 'pesado'] pero...
'seria bueno' que usaras 'texto plano' [NO formatos html] en tus respuestas y mensajes [=>menor 'tamaño'<=]

saludos,
hector.
-
la siguiente macro, 'busca' [hasta 4 dias 'atras'] el archivo de fecha 'mas reciente'.
una vez 'encontrado'... 'pasa' los valores de las [3] celdas [de 'ese' archivo] en las [3] celdas de la hoja 'x' del libro 'y'
1° 'haciendo' un vinculo 'real' hacia ellas y...
2° 'rompiendo' ese vinculo [convirtiendo los valores 'extraidos' a sus valores 'finales' EN cada celda 'destino']
[si deseas 'conservar' el vinculo... elimina la linea que 'dice': =>.Value = .Value<=]
en un modulo de codigo 'normal' ==Sub Traer_Datos_De_Archivo_Reciente()
Dim Sig As Integer, PC_Remota As String, Archivo_Reciente As String, Hoja As String
PC_Remota = "M:\"
For Sig = 0 To 3
Archivo_Reciente = Format(Date - Sig, "ddmmyyyy") & ".xls"
If Dir(PC_Remota & Archivo_Reciente) <> "" Then Exit For
Next
If Dir(PC_Remota & Archivo_Reciente) = "" Then Exit Sub
Hoja = "Hoja1"
For Sig = 1 To 3
With Worksheets(1).Range("a" & Sig)
.Formula = "='" & PC_Remota & "[" & Archivo_Reciente & "]" & Hoja & "'!a" & Sig
.Value = .Value
End With
Next
End Sub

Preguntas similares