Excel - Tres dudas (Cerrar y abrir libros, imágenes en formulario y for each)

 
Vista:
Imágen de perfil de Roberto
Val: 16
Ha disminuido su posición en 5 puestos en Excel (en relación al último mes)
Gráfica de Excel

Tres dudas (Cerrar y abrir libros, imágenes en formulario y for each)

Publicado por Roberto (21 intervenciones) el 30/03/2019 17:04:14
Hola a tod@s

Tengo tres dudas



A ver si sería posible cerrar todos los libros que tengo abiertos
Guardar los cambios
Abrir mi libro
Trabajar con mi libro
Cerrar mi libro
Abrir de nuevo todos los libros que se cerraron cuando se abrió mi libro

Tengo la isguiente macro para cerrar los libros abiertos, pero sería posible hacer todo lo que comento ?

1
2
3
4
5
6
Sub macro libro()
Dim libro As Workbook
For Each libros In Workbooks
libro.close SaveChanges:=True
Next libro
End sub



Tengo unas imágenes subidas, guardadas, almacenadas, no se como denominarlo, en un formulario. No deseo, como me pasa ahora, que estén en una carpeta del sistema
Actualmente, con un botón, cojo una imagen de esa carpeta según el nombre que elijo en un combo, y la pego en una celda de la hora de cálculo
Mi intención sería coger esa misma imagen, según el nombre elegido en el combo, pero hacerlo desde ese formulario y no desde la carpeta donde las tengo ahora, y pegarla en la misma celda de la hoja de cálculo


Como podría hacer una espcie de base de datos en una hoja de excel
Que en función del nombre que elija en el combo, me coja los campos de la misma fila de la base anterior y me los pegue en textbox del formulario anterior
Luego esos mismo datos, bueno, o en el mismo momento, me los pegue en otra hoja, y cada vez que haya una línea llena, me los pegue en la de abajo

Aunque de ser posible, me dacantaría de poder hacerse, por una base de datos dentro del propio vba y que ésta no estuviera a la vista en la hoja de excel. Una especie de XML o algo así, no se si abrá manera

He probado varias opciones con for each, pero no logro dar con la adecuada

Lo importante sería, si la línea está vacía, escribir en ella, si no lo está, saltar a la siguiente

Un saludo y muchas gracias
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
Imágen de perfil de Antoni Masana
Val: 4.149
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Tres dudas (Cerrar y abrir libros, imágenes en formulario y for each)

Publicado por Antoni Masana (1459 intervenciones) el 31/03/2019 09:44:19
Punto 1

Lo que se puede hacer es que al abrir un libro de Excel (Tu Libro) se ejecute una macro automaticamente y ejecute por este orden los siguientes pasos

* Guardar los cambios
* Cerrar todos los libros que tengo abiertos

Trabajar con Tu Libro y al cerrar el libro:

* Guardar Mi libro
* Abrir de nuevo todos los libros que se cerraron cuando se abrió mi libro
* Cerrar mi libro

Punto 2

No se cuantas imágenes tienes ni que tamaño ocupan.
Puedes tenerlas todas dentro del formulario o en alguna hoja de Excel pero estas imágenes se cargan en memoria cuando abre el libro y aunque no las veas ocupan espació y pueden re-elentizar el sistema.

Punto 3

Excel no es una Base de Datos.
Por su diseño se puede usar en forma de fichero de datos siendo cada fila un registro y cada columna un campo.
La primera fila se debe poner una cabecera donde ponga el nombre o tipo de campo.
Para que la hoja no se vea hay que ocultarla.
La expresión: "base de datos dentro del propio vba " no es correcta, la Base de Datos esta en el propio Excel, VBA es un lenguaje de programación.

Para mostrar los datos buscados hay que recorrer la columna del dato hasta que se encuentre el dato (Existe) o una celda vacía (No Existe)
Para añadir un nuevo registro hay que recorrer la columna del dato hasta que se encuentre una celda vacía.

Saludos.
\\//_
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
Imágen de perfil de Roberto
Val: 16
Ha disminuido su posición en 5 puestos en Excel (en relación al último mes)
Gráfica de Excel

Tres dudas (Cerrar y abrir libros, imágenes en formulario y for each)

Publicado por Roberto (21 intervenciones) el 01/04/2019 17:20:28

Muchas gracias por la respuesta
Si me lo permites, te iré haciendo alguna pregunta, aclaración y objetivo al respecto sobre cada punto

Punto 1

Lo que se puede hacer es que al abrir un libro de Excel (Tu Libro) se ejecute una macro automaticamente y ejecute por este orden los siguientes pasos

* Guardar los cambios
* Cerrar todos los libros que tengo abiertos

Trabajar con Tu Libro y al cerrar el libro:

* Guardar Mi libro
* Abrir de nuevo todos los libros que se cerraron cuando se abrió mi libro
* Cerrar mi libro

####---------------------------------------------------------------------------------------------------------------------------------
Como había comentado, usé la siguiente macro,
1
2
3
4
5
6
Sub macro libro()
Dim libro As Workbook
For Each libros In Workbooks
libro.close SaveChanges:=True
Next libro
End sub
pero como bien hace, al abrir mi libro, cierra todos los abiertos, incluido el mío

Podrías decirme la forma de hacerlo correctamente ?

-----------------------------------------------------------------------------------------------------------------------------------------####

Punto 2

No se cuantas imágenes tienes ni que tamaño ocupan.
Puedes tenerlas todas dentro del formulario o en alguna hoja de Excel pero estas imágenes se cargan en memoria cuando abre el libro y aunque no las veas ocupan espació y pueden re-elentizar el sistema.

####-------------------------------------------------------------------------------------------------------------------------------------------
En realidad se trata de una plantilla de solicitud por los desplazamiento realizados en la empresa, y tenemos que entregarla todas las semanas
Lo que hice fue automatizar todo el proceso de rellenado de la solicitud con los datos personales, incluidas las firmas de cada empleado de mi departamento, y combos con los lugares a los que nos desplazamos
Actalmente somos 12, o sea, doce imágenes (El libro pesa 148kb incluidas las imágenes con las 12 firmas insertadas en el formulario)

Como no se hacerlo de otra forma, ahora tengo la carpeta externa con las firmas, pero no nos gusta dejar esas firmas a la vista de todo el mundo, de ahí que he pensado en dejar las firmas en el formulario y extraerlas desde ahí hacia la hoja excel que se enviará por correo.

Pero no logro hacer como en lugar de ir a buscar la imagen de la firma a la carpeta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
On Error GoTo Error
        Image2.Picture = LoadPicture(ThisWorkbook.Path & "\Firmas\" & ComboNombre.Text & ".jpg")
        Image2.PictureSizeMode = fmPictureSizeModeStretch
Error:
 
        Sheets("Hoja1").Select
        ActiveSheet.Range("G50").Select
        SavePicture Me.Image2.Picture, "mi_logo.jpg"
        Worksheets("Hoja1").Pictures.Insert("mi_logo.jpg").Select
            With Selection.ShapeRange
                .LockAspectRatio = msoFalse
                .Top = Range("G50").Top + 5
                .Left = Range("G50").Left + 5
                .Width = 77
                .Height = 52
            End With
 
        Me.LabelFirma.Visible = True
        Kill "mi_logo.jpg"

Me tome la imagen de dicha firma desde el formulario. (NombreFormulario "FM_Firmas". Nombre imágenes "IM_" & NumEmpleado)
¿Me podrías ayudar?
-----------------------------------------------------------------------------------------------------------------------####

Punto 3

Excel no es una Base de Datos.
Por su diseño se puede usar en forma de fichero de datos siendo cada fila un registro y cada columna un campo.
La primera fila se debe poner una cabecera donde ponga el nombre o tipo de campo.
Para que la hoja no se vea hay que ocultarla.
La expresión: "base de datos dentro del propio vba " no es correcta, la Base de Datos esta en el propio Excel, VBA es un lenguaje de programación.

Para mostrar los datos buscados hay que recorrer la columna del dato hasta que se encuentre el dato (Existe) o una celda vacía (No Existe)
Para añadir un nuevo registro hay que recorrer la columna del dato hasta que se encuentre una celda vacía.

Saludos.

####--------------------------------------------------------------------------------------------------------------------------------------
Entiendo, pero me has dado una idea
Intentaré crear una función con los datos de cada compañero, que actualmente tengo en una hoja de excel oculta, que tampoco me gusta dejarla a la vista de todos aunque como decía, la tenga oculta
Mi intención sería poder añadir nuevos compañeros y nuevas firmas
tendré que indagar como ir creando nuevas funciones con los datos personales desde un botón y almacenar cada dato en una variable
ejemplo:
1
2
3
4
5
6
Funtion Emp200001()
   Nombre = "Juan"
   Apellidos = "García García"
   DNI = "XX.XXX.XXX-X"
   NumEmpleado = 200001
End Funtion
un saludo y muchas gracias
------------------------------------------------------------------------------------------------------------------####
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