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 (...), ?????

... dispongo de un fichero excel (MAESTRO) con varias hojas (3)
. Me gustaria seleccionar cada una de estas hojas, copiar todo su contenido, pegar como valores
y a continuacion estas tres hojas moverlas a un libro nuevo (INFORME).
Ahora bien, en REPORT quiero conservar las formulas
por lo que no deberian guardarse los cambios y el fichero INFORME se deberia ir actualizando dia tras dia
por lo que se deberia sobreescribir al guardarse...
Como puedo abordar esto que os comento? Es posible?



- 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.
Respuesta Responder a este mensaje
#2 Seepy
06/11/2009 - 08:33 | Informe spam
On 6 nov, 03:22, "Héctor Miguel"
wrote:
hola (...), ?????

> ... dispongo de un fichero excel (MAESTRO) con varias hojas (3)
>. Me gustaria seleccionar cada una de estas hojas, copiar todo su contenido, pegar como valores
> y a continuacion estas tres hojas moverlas a un libro nuevo (INFORME).
> Ahora bien, en REPORT quiero conservar las formulas
> por lo que no deberian guardarse los cambios y el fichero INFORME se deberia ir actualizando dia tras dia
> por lo que se deberia sobreescribir al guardarse...
> Como puedo abordar esto que os comento? Es posible?

- 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.



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!
Respuesta Responder a este mensaje
#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 __
... siento no haberme explicado del todo. Os comento:
Realmente dispogo de 2 maestros, cada uno de los cuales dispone de unas tablas dinamicas.
Desde unas hojas en su interior, las cuales hacen referencia a estas tablas dinamicas, se obtienen los datos para generar el informe final.
Maestro1-> Hoja tabla dinamica + hoja informe
Maestro 2-> 2 hojas tablas dinamicas + 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 dinamicas)
y estas 3 hojas pegarlas en un libro nuevo y depositarlo en una ruta.
Luego programare una macro de actualizacion diaria que vaya machacando el fichero de informes.

Habia pensado hacer algo asi:
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 se si ahora me he explicado un poco mas... Espero que podais echarme una mano
pues no tengo del todo claro si es posible realizarlo tal cual me explico...
Respuesta Responder a este mensaje
#4 Seepy
08/11/2009 - 20:38 | Informe spam
On 6 nov, 22:39, "Héctor Miguel"
wrote:
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 __

> ... siento no haberme explicado del todo. Os comento:
> Realmente dispogo de 2 maestros, cada uno de los cuales dispone de unas tablas dinamicas.
> Desde unas hojas en su interior, las cuales hacen referencia a estas tablas dinamicas, se obtienen los datos para generar el informe final.
> Maestro1-> Hoja tabla dinamica + hoja informe
> Maestro 2-> 2 hojas tablas dinamicas + 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 dinamicas)
> y estas 3 hojas pegarlas en un libro nuevo y depositarlo en una ruta.
> Luego programare una macro de actualizacion diaria que vaya machacando el fichero de informes.

> Habia pensado hacer algo asi:
> 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 se si ahora me he explicado un poco mas... Espero que podais echarme una mano
> pues no tengo del todo claro si es posible realizarlo tal cual me explico...



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
Respuesta Responder a este mensaje
#5 Héctor Miguel
09/11/2009 - 04:00 | Informe spam
hola (Jordi ?), !

... he estado probando con la grabadora de macros y tengo el siguiente codigo: (...)
Me gustaria saber si debo seguir ese codigo sobretodo la parte de crear el nuevo libro
y mover las dos hojas y como podría incluir en el libro creado otras hojas desde otro libro...



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
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida