Guardar varias hojas en libro

28/03/2006 - 16:57 por Antonio | Informe spam
Haber me explico, he preparado con vuestra ayuda un libro con 5 hojas. En
dos de ellas se colocan los datos que rellenan la hoja "TITULAR",
"DISTRIBUIDORA" e "INSTALADORA". Lo que yo quiero que hacer un boton para
guardar estas tres hojas con los datos en un nuevo libro con un nuevo
nombre.

Saludos

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/03/2006 - 21:00 | Informe spam
hola, Antonio !

... libro con 5 hojas rellenan la hoja "TITULAR", "DISTRIBUIDORA" e "INSTALADORA"
... quierohacer un boton para guardar estas tres hojas con los datos en un nuevo libro con un nuevo nombre.



dependiendo de como o de donde quieras que el codito 'tome' el nombre y la ruta del libro nuevo...
prueba/modifica/adapta/... una macro +/- como la siguiente asignada al boton que mencionas...
en un modulo de codigo 'normnal' ==Sub Nuevo_libro()
Worksheets(Array("titular", "distribuidora", "instaladora")).Copy
ActiveWorkbook.SaveAs "c:ueva rutauevo nombre.xls", xlWorkbookNormal
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Antonio
29/03/2006 - 09:56 | Informe spam
Bien Hector. El código funciona en parte. Te explico: al pulsar el boton
debo poder poner yo el nombre del libro, osea como si pulsada GUARDAR COMO y
este nuevo libro no tiene que quedar vinculado al principal porque sino al
borrar los datos de la hoja1 del libro principal tambien desaparecen del
nuevo.

"Héctor Miguel" escribió en el mensaje
news:
hola, Antonio !

... libro con 5 hojas rellenan la hoja "TITULAR", "DISTRIBUIDORA" e
"INSTALADORA"
... quierohacer un boton para guardar estas tres hojas con los datos en
un nuevo libro con un nuevo nombre.



dependiendo de como o de donde quieras que el codito 'tome' el nombre y la
ruta del libro nuevo...
prueba/modifica/adapta/... una macro +/- como la siguiente asignada al
boton que mencionas...
en un modulo de codigo 'normnal' ==> Sub Nuevo_libro()
Worksheets(Array("titular", "distribuidora", "instaladora")).Copy
ActiveWorkbook.SaveAs "c:ueva rutauevo nombre.xls", xlWorkbookNormal
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.


Respuesta Responder a este mensaje
#3 Héctor Miguel
29/03/2006 - 10:39 | Informe spam
hola, Antonio !

... El codigo funciona en parte... al pulsar el boton debo poder poner yo el nombre del libro, osea como si pulsada GUARDAR COMO
... este nuevo libro no tiene que quedar vinculado al principal porque... al borrar los datos... del libro principal... desaparecen del nuevo.



[supongo que] la parte que no funciona... se debe a lo que no pude 'adivinar' [o intuir] de tu consulta original :))
es por ello que te comentaba...
dependiendo de como o de donde quieras que el codigo 'tome' el nombre y la ruta del libro nuevo...
prueba/modifica/adapta/... una macro +/- como la siguiente asignada al boton que mencionas...





1) de como o de donde quieras que el codigo 'tome' el nombre y la ruta del libro nuevo... ?
- de alguna celda en alguna hoja de tu libro principal ?
- por medio de un InputBox ?
- usando el metodo Application.GetSaveAsFilename ?

2) necesitaras alguna 'comprobacion' de que el 'nuevo' libro NO exista ya donde se pretende guardar ?
o de que el nombre NO contenga caracteres NO admitidos para nombrar archivos ?

3) si lo que necesitas es 'desaparecer' formulas [y vinculos] del libro original... necesitaras 'convertir' a valores las hojas del libro 'nuevo'...
[p.e.] suponiendo que lo guardes en el mismo directorio del principal, con el nombre que tengas en la celda 'C1' de la primer hoja...
en un modulo de codigo 'normnal' ==Sub Nuevo_libro()
Dim Hoja As Worksheet
Worksheets(Array("titular", "distribuidora", "instaladora")).Copy
For Each Hoja In Worksheets
Hoja.UsedRange.Copy Hoja.[a1].PasteSpecial xlPasteValues
Next
ActiveWorkbook.SaveAs _
FileName:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).[c1], xlWorkbookNormal
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Antonio
29/03/2006 - 11:24 | Informe spam
Vamos por partes porque no lo consigo. Con algun fallo pero tu codigo tira.
Veamos no entiendo mucho de codigo, solo lo que me explicais.Centremos en
esta parte
Dim Hoja As Worksheet
Worksheets(Array("titular", "distribuidora", "instaladora")).Copy
For Each Hoja In Worksheets
Hoja.UsedRange.Copy Hoja.[a1].PasteSpecial xlPasteValues
Next

Esto lo que quiere decir es que copi las tres hojas con el mismo nombre en
un nuevo libro, pero las vincula con el libro anterior es decir si en el
LIBRO1 en la hoja TITULAR pone PERICO al borrar el dato tambien se borra del
LIBRO2 en la hoja TITULAR y eso no de pasar.


"Héctor Miguel" escribió en el mensaje
news:
hola, Antonio !

... El codigo funciona en parte... al pulsar el boton debo poder poner yo
el nombre del libro, osea como si pulsada GUARDAR COMO
... este nuevo libro no tiene que quedar vinculado al principal porque...
al borrar los datos... del libro principal... desaparecen del nuevo.



[supongo que] la parte que no funciona... se debe a lo que no pude
'adivinar' [o intuir] de tu consulta original :))
es por ello que te comentaba...
dependiendo de como o de donde quieras que el codigo 'tome' el nombre y
la ruta del libro nuevo...
prueba/modifica/adapta/... una macro +/- como la siguiente asignada al
boton que mencionas...





1) de como o de donde quieras que el codigo 'tome' el nombre y la ruta del
libro nuevo... ?
- de alguna celda en alguna hoja de tu libro principal ?
- por medio de un InputBox ?
- usando el metodo Application.GetSaveAsFilename ?

2) necesitaras alguna 'comprobacion' de que el 'nuevo' libro NO exista ya
donde se pretende guardar ?
o de que el nombre NO contenga caracteres NO admitidos para nombrar
archivos ?

3) si lo que necesitas es 'desaparecer' formulas [y vinculos] del libro
original... necesitaras 'convertir' a valores las hojas del libro
'nuevo'...
[p.e.] suponiendo que lo guardes en el mismo directorio del principal, con
el nombre que tengas en la celda 'C1' de la primer hoja...
en un modulo de codigo 'normnal' ==> Sub Nuevo_libro()
Dim Hoja As Worksheet
Worksheets(Array("titular", "distribuidora", "instaladora")).Copy
For Each Hoja In Worksheets
Hoja.UsedRange.Copy Hoja.[a1].PasteSpecial xlPasteValues
Next
ActiveWorkbook.SaveAs _
FileName:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).[c1],
xlWorkbookNormal
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.


Respuesta Responder a este mensaje
#5 Héctor Miguel
30/03/2006 - 04:38 | Informe spam
hola, Antonio !

... Con algun fallo pero tu codigo tira... no entiendo mucho de codigo, solo lo que me explicais
Dim Hoja As Worksheet
Worksheets(Array("titular", "distribuidora", "instaladora")).Copy
For Each Hoja In Worksheets
Hoja.UsedRange.Copy Hoja.[a1].PasteSpecial xlPasteValues
Next
Esto lo que quiere decir es que copi las tres hojas con el mismo nombre en un nuevo libro
pero las vincula con el libro anterior es decir si en el LIBRO1 en la hoja TITULAR pone PERICO
al borrar el dato tambien se borra del LIBRO2 en la hoja TITULAR y eso no de pasar.



el fallo es que al 'adelgazar' el codigo... 'me comi' un salto de linea representado por dos puntos :-(
debio haber quedado: -> Hoja.UsedRange.Copy: Hoja.[a1].PasteSpecial xlPasteValues [perdon] :))

mejor cambia a lo siguiente [con los comentarios donde corresponde]...
' declaramos una variable de tipo worksheets que asume/hereda/... todas las propiedades de dicho objeto
Dim Hoja As Worksheet
' copiamos las hojas en el array a un libro nuevo
Worksheets(Array("titular", "distribuidora", "instaladora")).Copy
' hacemos un bucle para convertir a valores los datos/formulas/vinculos/ de las hojas en el libro nuevo
For Each Hoja In Worksheets
Hoja.UsedRange.Copy
Hoja.[a1].PasteSpecial xlPasteValues
Next

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida