Crear un excel con las hojas de otro excel

05/11/2009 - 09:52 por Seepy | Informe spam
Hola a todos, dispongo de un fichero excel (MAESTRO) con varias hojas
(3). Me gustaría seleccionar cada una de estas hojas, copiar todo su
contenido, pegar como valores y a continuación, estas tres hojas
moverlas a un libro nuevo (INFORME). Ahora bien, en REPORT quiero
conservar las fórmulas, por lo que no deberían guardarse los cambios y
el fichero INFORME se debería ir actualizando día tras día, por lo que
se debería sobreescribir al guardarse...
¿Cómo puedo abordar esto que os comento? ¿Es posible?
Un saludo y muchas gracias por la posible ayuda.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
06/11/2009 - 03:22 | Informe spam
hola (...), ?????

Mostrar la cita
- el libro que llamas "maestro" y al que le denominas "informe"...
- se trata del mismo libro ?
- solo tiene "esas" 3 hojas ?
- como se llaman "esas" 3 hojas ?

- el libro que llamas "informe"...
- solo va a tener "esas" 3 hojas del libro maestro ?

- ambos libros se guardan en la misma ruta ?

ayudanos a ayudarte proporcionando mas informacion y ...
es mejor si se puede (RE)crear un modelo de trabajo "igual al tuyo"
saludos,
hector.
#2 Seepy
06/11/2009 - 08:33 | Informe spam
On 6 nov, 03:22, "Héctor Miguel"
wrote:
Mostrar la cita
Hola, siento no haberme explicado del todo. Os comento:
Realmente dispogo de 2 maestros, cada uno de los cuales dispone de
unas tablas dinámicas. Desde unas hojas en su interior, las cuales
hacen referencia a estas tablas dinámicas, se obtienen los datos para
generar el informe final.
Maestro1-> Hoja tabla dinámica + hoja informe
Maestro 2-> 2 hojas tablas dinámicas + 2 hojas informe

Lo que quiero es copiar el contenido de las hojas informe, pegar como
valores (no quiero que se guarden las formulas que tiran de las tablas
dinámicas) y estas 3 hojas pegarlas en un libro nuevo y depositarlo en
una ruta. Luego programaré una macro de actualización diaria que vaya
machacando el fichero de informes.

Había pensado hacer algo así:
Abrir Maestro1, actualizar TD, guardar libro, copiar hoja informe,
pegar valores, mover copia de informe a libro nuevo, cerrar sin
guardar.
Abrir Maestr2, actualizar TTDD, guardar libro, copiar hojas informes,
pegar valores, mover las 2 copias de informe al libro nuevo anterior,
cerrar sin guardar.
Libro nuevo, guardar en ruta, machando el anterior...

No sé si ahora me he explicado un poco más... Espero que podais
echarme una mano, pues no tengo del todo claro si es posible
realizarlo tal cual me explico...
un saludo y gracias!
#3 Héctor Miguel
06/11/2009 - 22:39 | Informe spam
hola (...), ?????

lo que expones que "habias pesado" (me parece) una forma adecuada de solucionar estos procedimientos ;)

si quieres, activa la grabadora de macros mientras realizas estas acciones y revisa/analiza/... el codigo generado
(ya comentaras que parte/s del codigo te gustaria o necesitas arreglar/adaptar/personalizar/...)

saludos,
hector.

__ OP __
Mostrar la cita
#4 Seepy
08/11/2009 - 20:38 | Informe spam
On 6 nov, 22:39, "Héctor Miguel"
wrote:
Mostrar la cita
Hola Hector, he estado probando con la grabadora de macros y tengo el
siguiente codigo:
Sub GeneraReport()
'
' GeneraReport Macro
' Macro grabada el 08/11/2009 por JORDI
'

'
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Sheets("RatiosUds").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Workbooks.Add
Windows("Reporting.xls").Activate
Sheets(Array("Ratios%", "RatiosUds")).Select
Sheets("RatiosUds").Activate
Application.CutCopyMode = False
Sheets(Array("Ratios%", "RatiosUds")).Copy Before:=Workbooks
("Libro4").Sheets( _
1)
ChDir "C:\Escritorio"
ActiveWorkbook.SaveAs Filename:= _
"C:\Escritorio\Report.xls", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="",
ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub

Me gustaría saber si debo seguir ese código, sobretodo la parte de
crear el nuevo libro y mover las dos hojas y cómo podría incluir en el
libro creado otras hojas desde otro libro...
Muchas gracias por todo. Un saludo
#5 Héctor Miguel
09/11/2009 - 04:00 | Informe spam
hola (Jordi ?), !

Mostrar la cita
la intencion y el objetivo de sugerir el uso de la grabadora de macros es para:
- relacionar las lineas que genera la grabadora de macros con las acciones efectuadas por el usuario
- analizar/entender/descifrar/... el codigo y familiarizarse con las constantes, metodos, objetos, propiedades, etc.

la intencion de (re)preguntar en las consultas es para poder (re)crear los modelos de trabajo de quien consulta
(aunque esta parte, rara vez es contestada de forma "completa/exacta/precisa/..." p.e.)

del codigo que expones se puede deducir que...
- tu "libro maestro 1" se llama: "Reporting.xls" pero... como se llama el "libro maestro 2" ???
- del libro maestro 1 copias las hojas "Ratios%" y "RatiosUds", pero... cuales hojas del "libro maestro 2" ???

lo que NO se pudo deducir... lo estoy inventando/suponiendo/adivinando/... (te toca corregir donde y como corresponde) :-((

te paso un codigo "generado en las rodillas" y "comentado" que (espero) sera de facil comprension y adaptacion, asi que...
- corrige en la segunda linea de constantes el nombre del libro "maestro2.xls"
- corrige la asignacion de la segunda matriz (HojasMaestro2 = Array(...) el array con los nombres de las hojas correctas

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Const RutaReporte As String = "c:\escritorio\", NombreReporte As String = "Report"
Const Maestro1 As String = "reporting.xls", Maestro2 As String = "maestro2.xls"
Dim ReporteNuevo As String, Hoja As Worksheet, HojasMaestro1, HojasMaestro2
Sub GeneraReport()
' suprimimos la actualizacion de pantalla '
Application.ScreenUpdating = False
ReporteNuevo = RutaReporte & NombreReporte
HojasMaestro1 = Array("ratios%", "ratiosuds")
HojasMaestro2 = Array("dinamica1", "dinamica2", "reporte1", "reporte2")
' borramos el reporte anterior ... '
If Dir(ReporteNuevo & ".xls") <> "" Then Kill ReporteNuevo & ".xls"
' copiamos las hojas del maestro1 a un libro nuevo (quedando como libro activo) '
Workbooks(Maestro1).Worksheets(HojasMaestro1).Copy
' grabamos el nuevo libro y queda como referencia para las hojas del "maestro2" '
ActiveWorkbook.SaveAs ReporteNuevo, xlWorkbookNormal
' convertimos a valores constantes el contenido de las hojas (SIN formulas) '
For Each Hoja in Worksheets(HojasMaestro1)
Hoja.UsedRange.Value = Hoja.UsedRange.Value
Next
' copiamos las hojas del maestro2 a un libro nuevo '
Workbooks(Maestro2).Worksheets(HojasMaestro2).Copy _
After:=Workbooks(NombreReporte).Worksheets(2)
' convertimos a valores constantes el contenido de las hojas (SIN formulas) '
For Each Hoja in Worksheets(HojasMaestro2)
Hoja.UsedRange.Value = Hoja.UsedRange.Value
Next
' grabamos el libro activo (Report.xls) por las hojas agregadas '
ActiveWorkbook.Save
End Sub
Ads by Google
Search Busqueda sugerida