Excel - CommandButton abrir//crear

 
Vista:

CommandButton abrir//crear

Publicado por Laura (6 intervenciones) el 26/02/2008 12:05:07
Hola a todos y gracias de antemano
Tengo en excel un CommandButton por cada fila. Quiero conseguir que cuando haga click en el commandbutton busque en una carpeta (por ejemplo la carpeta "contratos") un excel con el mismo nombre que una casilla de la fila en la que se encuentra el commandbutton (por ejemplo si la casilla c3 pone contrato1 tiene que busca el archivo contrato1.xls).
Si lo encuentra tiene que abrirlo
Si no lo encuentra tiene que crearlo con el nombre que buscaba, con un formato de una excel que se encuentra en la carpeta “contratos” y tiene que traspasar algunas celdas al nuevo documento y abrirlo.
Ejemplo: le doy al commandbutton de la fila 5 (en la casilla c5 pone contrato1) y busca en la carpeta “contratos” si existe el archivo “contrato1.xls”, lo encuentra y lo abre.

Ya llevo días tratando de conseguirlo, haber si algún experto me puede ayudar.

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:CommandButton abrir//crear

Publicado por Kaiser (38 intervenciones) el 26/02/2008 14:07:36
Laura, he tratado de recrear tu problema creando un libro con un commandbutton en la celda C4 y el nombre del archivo en la celda A4. Lo que hace este procedimiento es buscar el archivo utilizando el nombre guardado en la celda A4 en una ubicación predeterminada. Mejor veamos el código.

Private Sub cmdAbrir_Click()
Dim PathContratos, NomArchivo, Buscador As String

'Guardar en una variable la ubicación de los contratos
PathContratos = "C:WINNTperfilescl063129208Mis documentos"

'Guardar en otra variable el nombre del archivo. Estoy suponiendo
'que dicho nombre de archivo esta almacenado en la celda A4
NomArchivo = Range("A4")

'En la variable buscador almaceno el path y nombre del archivo
Buscador = PathContratos & NomArchivo

'Luego procedo a buscar el archivo
Buscador = Dir(Buscador)

'Buscador = "" es porque no encontro el archivo
'Buscador = NomArchivo entonces encontro el archivo
If Buscador <> "" Then
'Si encontro el archivo en el directorio PathContratos
'lo abre. Le pasamos el path completo + el nombre del archivo
Workbooks.Open Filename:=PathContratos & NomArchivo
Else
'Si no encontro el archivo crea un nuevo libro
Workbooks.Add
End If
End Sub

Si por ejemplo no almacenas el nombre del archivo en ninguna celda y tomas el caption del commandbutton entonces asignale a NomArchivo = commandbutton1.caption y si no es así, nada más asignale el nombre directamente NomArchivo = "Contrato1.xls".

Espero te pueda servir.

Saludos desde Chile.

Kaiser.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CommandButton abrir//crear

Publicado por Laura (6 intervenciones) el 26/02/2008 14:43:09
Muchisimas gracias Kaisernegro eres un fenomeno.

Solo al codigo le falta una cosa que necesitaba, cuando no encuentra el archivo tiene que crear y guardar (en la carpeta contratos) un excel con el nombre de la casilla que no ha encontrado, tiene que utilizar el formato de una plantilla (una plantilla de contratos en excel) que esta en la carpeta de los contratos, y tiene que el nuevo documento creado.

Ademas cuando no encuentra el archivo al crear uno nuevo tiene que copiar un par de casillas desde el excel en el que esta el command a la nueva hoja creada.

Ejemplo: si no encuentra el contrato Vivachile.xls tiene que crearlo con el formato del documento plantilla.xls(que se encuentra en contratos). Y a la vez que lo guarda y lo abre tiene que copiarle (imaginemonos que en el A8 del excel del commandbutton pone "vencido") a una casilla del nuevo documento creado.

Un saludo y muchisimas gracias por el tiempo

Saludos desde españa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CommandButton abrir//crear

Publicado por kaiser (38 intervenciones) el 26/02/2008 16:34:29
Te explicare como hacer lo que necesitas pero tu deberás implementarlo como corresponda:

'Antes de comenzar deberás agregar la linea siguiente
On Local Error Resume Next
'Bajo el Sub, ya que nos permitirá capturar algún error en tiempo de ejecución
'que se pueda producir al momento de abrir o guardar el nuevo libro.

'Anteriormente mencione que si no se encontraba el libro creaba uno nuevo
'con la siguiente línea
Workbooks.add

'Pues para lo que tu requieres debemos obviar la línea anterior
'y cambiarla por la siguiente linea y suponiendo que la plantilla que deseo
'utilizar es: C:Archivos de programaMicrosoft OfficeTemplates3082Factura.xlt
Workbooks.Add Template:= _
"C:Archivos de programaMicrosoft OfficeTemplates3082Factura.xlt"

'A continuación deberás pasar los datos que requieras al libro

'Y para finalizar Guardar el libro utilizando las variables del ejemplo anterior
ActiveWorkbook.SaveAs Filename:= _
PathContratos & NomArchivo, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

'En caso de que se produsca un error en tiempo de ejecución lo capturamos ya que declaramos al principio del procedimiento On Local Error.....
If Err then
Msgbox "No se ha podido guardar el libro. Revise que no este abierto"
endif
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CommandButton abrir//crear

Publicado por kaiser (38 intervenciones) el 26/02/2008 16:35:21
Te explicare como hacer lo que necesitas pero tu deberás implementarlo como corresponda:

'Antes de comenzar deberás agregar la linea siguiente
On Local Error Resume Next
'Bajo el Sub, ya que nos permitirá capturar algún error en tiempo de ejecución
'que se pueda producir al momento de abrir o guardar el nuevo libro.

'Anteriormente mencione que si no se encontraba el libro creaba uno nuevo
'con la siguiente línea
Workbooks.add

'Pues para lo que tu requieres debemos obviar la línea anterior
'y cambiarla por la siguiente linea y suponiendo que la plantilla que deseo
'utilizar es: C:Archivos de programaMicrosoft OfficeTemplates3082Factura.xlt
Workbooks.Add Template:= _
"C:Archivos de programaMicrosoft OfficeTemplates3082Factura.xlt"

'A continuación deberás pasar los datos que requieras al libro

'Y para finalizar Guardar el libro utilizando las variables del ejemplo anterior
ActiveWorkbook.SaveAs Filename:= _
PathContratos & NomArchivo, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

'En caso de que se produsca un error en tiempo de ejecución lo capturamos ya que declaramos al principio del procedimiento On Local Error.....
If Err then
Msgbox "No se ha podido guardar el libro. Revise que no este abierto"
endif

Saludos y si necesitas más ayuda no dudes en contactarme.

Kaiser.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CommandButton abrir//crear

Publicado por Laura (6 intervenciones) el 26/02/2008 18:45:55
Muchas gracias Kaiser!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar