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

#6 Antonio
30/03/2006 - 10:14 | Informe spam
Te explico. Da un error en esta linea: Hoja.[a1].PasteSpecial xlPasteValues
y el error 1004
"Héctor Miguel" escribió en el mensaje
news:
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
#7 Héctor Miguel
30/03/2006 - 19:46 | Informe spam
hola, Antonio !

... Da un error en esta linea: Hoja.[a1].PasteSpecial xlPasteValues y el error 1004



es probable que tengas librerias 'basicas' de vba no instaladas, corruptas o perdidas -?-
-> revisa en el editor de vba, en [menu] herramientas / referencias...
si hay alguna/s que tengas 'marcada/s' como: FALTA: o... MISSING: -?-

comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#8 Antonio
30/03/2006 - 19:54 | Informe spam
Eso creo que esta bien. La verdad es que estoy un poco liado con este codigo
y te agradeceria me lo reescribieras, contando que las hojas a copiar estan
ocultas y protegidas.

Gracias por tu interes.

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

... Da un error en esta linea: Hoja.[a1].PasteSpecial xlPasteValues y el
error 1004



es probable que tengas librerias 'basicas' de vba no instaladas, corruptas
o perdidas -?-
-> revisa en el editor de vba, en [menu] herramientas / referencias...
si hay alguna/s que tengas 'marcada/s' como: FALTA: o...
MISSING: -?-

comentas ?
saludos,
hector.


Respuesta Responder a este mensaje
#9 Héctor Miguel
30/03/2006 - 20:33 | Informe spam
hola, Antonio !

La verdad es que estoy un poco liado con este codigo y te agradeceria me lo reescribieras
contando que las hojas a copiar estan ocultas y protegidas.



[creo que] se trata de los ligeros detalles que, o se van agregando... o se habian quedado 'en el tintero' :))
el error 1004 lo lanza el intento de copiar hojas OCULTAS [que no lo habias mencionado antes] ;)
y creo que siguen algunos detalles no comentados/aclarados [como la forma de obtener el nombre del 'nuevo' libro] ;)

suponiendo que la clave de proteccion de las hojas ocultas es la misma... prueba con algo +/- como lo siguiente:

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

en un modulo de codigo 'norma', una macro asignada al boton comentado ==Sub Nuevo_libro()
Application.ScreenUpdating = False
Dim Hoja As Worksheet, Estas_hojas
Estas_hojas = Array("titular", "distribuidora", "instaladora")
For Each Hoja In Worksheets(Estas_hojas)
Hoja.Visible = True
Hoja.Unprotect "pon aqui la clave" ' <= MODIFICA
Next
Worksheets(Estas_hojas).Copy
For Each Hoja In Worksheets
Hoja.UsedRange.Value = Hoja.UsedRange.Value
Next
ThisWorkbook.Worksheets(Estas_hojas).Visible = False
ActiveWorkbook.SaveAs _
Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).[c1], _
FileFormat:=xlWorkbookNormal
End Sub
Respuesta Responder a este mensaje
#10 Antonio
31/03/2006 - 10:52 | Informe spam
Perdón por no explicarme bien a la primera. Ahora si que corre bien hasta la
orden:
ActiveWorkbook.SaveAs _
Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).[c1], _
FileFormat:=xlWorkbookNormal

Me da un error 1004 por no encontrar carperta, caracteres en el nombre no
permitidos, ets...

Otra cosa te queria preguntar una vez echo todo en el libro original me
quedan dos hojas DATOS y DEFECTOS, al correr el código se queda activa
DEFECTOS, ¿se puede hacer que quede activa DATOS?
"Héctor Miguel" escribió en el mensaje
news:%
hola, Antonio !

La verdad es que estoy un poco liado con este codigo y te agradeceria me
lo reescribieras
contando que las hojas a copiar estan ocultas y protegidas.



[creo que] se trata de los ligeros detalles que, o se van agregando... o
se habian quedado 'en el tintero' :))
el error 1004 lo lanza el intento de copiar hojas OCULTAS [que no lo
habias mencionado antes] ;)
y creo que siguen algunos detalles no comentados/aclarados [como la forma
de obtener el nombre del 'nuevo' libro] ;)

suponiendo que la clave de proteccion de las hojas ocultas es la misma...
prueba con algo +/- como lo siguiente:

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

en un modulo de codigo 'norma', una macro asignada al boton comentado
==> Sub Nuevo_libro()
Application.ScreenUpdating = False
Dim Hoja As Worksheet, Estas_hojas
Estas_hojas = Array("titular", "distribuidora", "instaladora")
For Each Hoja In Worksheets(Estas_hojas)
Hoja.Visible = True
Hoja.Unprotect "pon aqui la clave" ' <= MODIFICA
Next
Worksheets(Estas_hojas).Copy
For Each Hoja In Worksheets
Hoja.UsedRange.Value = Hoja.UsedRange.Value
Next
ThisWorkbook.Worksheets(Estas_hojas).Visible = False
ActiveWorkbook.SaveAs _
Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).[c1], _
FileFormat:=xlWorkbookNormal
End Sub


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida