Foros del Web » Soporte técnico » Ofimática »

Abrir un archivo excel desde otro

Estas en el tema de Abrir un archivo excel desde otro en el foro de Ofimática en Foros del Web. La problemática no me parece muy difícil de entender. Tengo un archivo excel (A) donde tengo unos datos y otro (B) donde quiero copiar algunas ...
  #1 (permalink)  
Antiguo 15/03/2006, 03:40
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Abrir un archivo excel desde otro

La problemática no me parece muy difícil de entender.
Tengo un archivo excel (A) donde tengo unos datos y otro (B) donde quiero copiar algunas hojas. Para ello, me he creado un botón con el que copio sin problema las hojas. Vamos que funciona. El inconveniente es que para poder hacerlo bien, tanto el archivo A como el B deben estar abiertos y esto depende de la persona que utilice el programa.
Como todos no conocemos excel de la misma forma antes de comenzar la copia hago una pregunta para advertir, pero me gustaría evitarme posibles errores si se pudiera abrir automáticamente el archivo B desde A y no dejárselo al usuario.
Supongo que se habrá entendido lo que pretendo, ahora sólo falta la solución . Gracias por anticipado por mover vuestras neuronas en mi favor.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #2 (permalink)  
Antiguo 15/03/2006, 03:53
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Pues utilizando la grabadora de macros (de gran utilidad, para aquellos a los que nos falla la memoria, y no nos acordamos de la sintaxis exacta de algunas cosas), me ha salido esto (o casi esto):
Código:
Sub Abrir_el_otro_fichero()
        'Abrimos el fichero de marras...
        Workbooks.Open Filename:="C:\Mis documentos\Probatinas\Probatina1.xls"
        'Lo minimizamos
        ActiveWindow.WindowState = xlMinimized
End Sub
Creo que era eso lo que buscabas...

Salu2
  #3 (permalink)  
Antiguo 15/03/2006, 04:19
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
De acuerdo

Pues gracias.
Yo también suelo utilizarla bastante, pero no me salía nada de lo que yo necesitaba. En cuanto salía del archivo para ir a l otro no me grababa.
Después del cafetito lo pruebo y te comento si se adapta a mis necesidades, o en que me falla.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #4 (permalink)  
Antiguo 15/03/2006, 05:15
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Lo que me has dado funciona perfectamente, pero no lo puedo aplicar a mi programa por un pequeño detalle. En el código debes especificar la dirección completa donde está el archivo y en mi caso no siempre es la misma. Si se pudiera indicarle que está en la misma carpeta en la que estamos trabajando, me sería más útil.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #5 (permalink)  
Antiguo 15/03/2006, 06:25
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Ha costado lo suyo, pero creo que con esto, se resuelve el problema...
Código:
Sub Abrir_el_otro_fichero()
    'Creamos una variable, que contendrá el nombre del archivo necesario,
    'es decir, el otro archivo que utilizaremos aparte de este que está abierto
    archivo_complementario = "Probatina1.xls"
    'Pasamos la ruta del archivo donde está este macro, a una variable,
    'por defecto, el otro archivo complementario deberá estar en esa misma ruta
    ruta = ActiveWorkbook.Path
    'Creamos el objeto FileSystemObject que entre otras cosas,
    'nos permite manipular, y leer ficheros
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'Si existe el archivo complementario, que lo abra y lo minimice a continuación
    If FSO.FileExists(ruta & "\" & archivo_complementario) Then
        'Abrimos el fichero de marras...
        Workbooks.Open Filename:=ruta & "\" & archivo_complementario
        'Lo minimizamos
        ActiveWindow.WindowState = xlMinimized
    Else
        'Si el archivo complementario no está en la mmisma carpeta
        'que el archivo donde se encuentran estas líneas de código,
        'mostramos un mensaje, indicándolo
        MsgBox (Chr(13) + "     El archivo """ & archivo_complementario & """ no existe, o" & _
        Chr(13) + "     no se encuentra en la carpeta donde debería estar." & _
        Chr(13) + Chr(13) + "     La ruta donde debería hallarse es:" & _
        Chr(13) + "     " & ActiveWorkbook.Path & "\" & "     " & _
        Chr(13) + Chr(13)), vbOKOnly, " FICHERO NO ENCONTRADO"
    End If
    'Limpiamos el objeto
    Set FSO = Nothing
End Sub
Salu2

Editado: Añadido lo que está en rojo, para su correcto funcionamiento.

Última edición por 3pies; 15/03/2006 a las 08:40
  #6 (permalink)  
Antiguo 15/03/2006, 06:45
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
De acuerdo

Muchas gracias. Veo que te defiendes bastante bien con el Excel y el VBA.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #7 (permalink)  
Antiguo 15/03/2006, 08:39
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Que va, eso de FSO es porque lo he aplicado en alguna página ASP.
Por cierto, he editado el anterior post, como podrás ver. Me dejé una cosita imprescindible para el buen funcionamiento de la macro (si te ha funcionado antes, es porque el último fichero abierto estaba en la misma ruta que ese llamado "probatina1".

Salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:30.