Archivado de hoja de Excel.
kknd04
-
Cemoibob Mensajes publicados 1 Estado Miembro -
Cemoibob Mensajes publicados 1 Estado Miembro -
Hola,
Estoy buscando archivar una hoja en mi libro de Excel.
Para que entiendas, aquí está el contexto:
Tengo un libro para gestionar mi empresa, en este libro hay muchas hojas diversas, entre ellas una de Facturación.
Esta última me permite editar facturas.
Pero me gustaría que cuando haga clic en un botón, se copie en otro libro de Excel (no abierto) llamado: Facturación.xlsx.
Debe copiarse en una nueva hoja con el nombre de la celda "J4".
Ambos libros están en la misma carpeta, me gustaría evitar direcciones demasiado precisas y que la macro busque únicamente en la carpeta del libro a copiar.
Entonces, el camino esperado es:
Clic en el botón Archivar => copia de la hoja => búsqueda del libro Facturación en la misma carpeta => apertura (si es necesario) del libro Facturación => creación de una hoja => nombramiento de esta hoja con el nombre de la celda "J4" => pegado de la hoja copiada.
No estoy seguro de que esta sea la mejor solución, tal vez tengas algo mejor que proponerme.
Gracias de antemano por tu ayuda.
Configuración: Windows / Chrome 76.0.3809.100
Estoy buscando archivar una hoja en mi libro de Excel.
Para que entiendas, aquí está el contexto:
Tengo un libro para gestionar mi empresa, en este libro hay muchas hojas diversas, entre ellas una de Facturación.
Esta última me permite editar facturas.
Pero me gustaría que cuando haga clic en un botón, se copie en otro libro de Excel (no abierto) llamado: Facturación.xlsx.
Debe copiarse en una nueva hoja con el nombre de la celda "J4".
Ambos libros están en la misma carpeta, me gustaría evitar direcciones demasiado precisas y que la macro busque únicamente en la carpeta del libro a copiar.
Entonces, el camino esperado es:
Clic en el botón Archivar => copia de la hoja => búsqueda del libro Facturación en la misma carpeta => apertura (si es necesario) del libro Facturación => creación de una hoja => nombramiento de esta hoja con el nombre de la celda "J4" => pegado de la hoja copiada.
No estoy seguro de que esta sea la mejor solución, tal vez tengas algo mejor que proponerme.
Gracias de antemano por tu ayuda.
Configuración: Windows / Chrome 76.0.3809.100
5 respuestas
-
Hola Kknd, hola foro,
Intenta así:Sub Macro1() Dim CS As Workbook 'declara la variable CS (Libro Fuente) Dim CA As String 'declara la variable CA (Ruta de Acceso) Dim OS As Worksheet 'declara la variable OS (Hoja Fuente) Dim CD As Workbook 'declara la variable CD (Libro Destino) Set CS = ThisWorkbook 'define el libro fuente CS CA = CS.Path & "/" 'define la ruta de acceso CA Set OS = CS.Worksheets("Facturación") 'define la hoja fuente OS On Error Resume Next 'gestión de errores (en caso de error pasa a la siguiente línea) Set CD = Workbooks("Facturación.xlsx") 'define el libro destino CD (genera un error si no está abierto) If Err <> 0 Then 'condición: si se ha generado un error Err.Clear 'elimina el error Set CD = Application.Workbooks.Open(CA & "Facturación.xlsx") 'define el libro destino CD (abriéndolo) End If 'fin de la condición On Error GoTo 0 'anula la gestión de errores OS.Copy after:=CD.Sheets(CD.Sheets.Count) 'copiamos la hoja fuente OS en la última posición del libro destino CD ActiveSheet.Name = ActiveSheet.Range("J4") 'renombra la hoja copiada End Sub
--
Hasta luego,
ThauTheme -
Hola,
Gracias por tu respuesta.
Tengo un error, la penúltima línea según el depurador.
El mensaje es:
Error de ejecución '91'
Variable objeto o variable de bloque With no definida
No sé a qué se refiere.-
I tested quickly before sending you and I didn't have any error...
If it’s line 18, maybe by replacing it with:Activesheet.Name = Range("J4")
By the way, this kind of code is without safeguards. If J4 is empty or contains forbidden characters in the name of a tab, you will crash...
The ideal if you want to conclude this project is to provide the file via a file hosting service like for example: https://www.cjoint.com/
-
-
El cambio no cambia nada.
Pero creo que es la línea 17 y no 18 la que me muestra el depurador.
De hecho, no conté la línea End Sub.
Entonces, la línea es la siguiente:
OS.Copy after:=CD.Sheets(CD.Sheets.Count) 'copia la hoja fuente OS en última posición del libro de destino CD
Voy a ver si puedo enviar la carpeta como archivo adjunto
Si tienes una idea mientras tanto...
Gracias de antemano -
Hola,
Acabo de entender el problema, era muy simple, la extensión de la carpeta de facturación no era xlsx, sino xslm.
Muchas gracias por tu ayuda. -
Bonjour a tous
Estoy buscando un código por favor para guardar a través de un botón en una hoja1 en formato pdf y con el nombre de una celda de otra hoja2 del mismo libro
Gracias por su ayuda