Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Crear un excel con las hojas de otro excel

166 views
Skip to first unread message

Seepy

unread,
Nov 5, 2009, 3:52:50 AM11/5/09
to
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.

H�ctor Miguel

unread,
Nov 5, 2009, 9:22:52 PM11/5/09
to
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.


Seepy

unread,
Nov 6, 2009, 2:33:29 AM11/6/09
to
On 6 nov, 03:22, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:

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!

H�ctor Miguel

unread,
Nov 6, 2009, 4:39:37 PM11/6/09
to
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

Seepy

unread,
Nov 8, 2009, 2:38:09 PM11/8/09
to
On 6 nov, 22:39, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:

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

H�ctor Miguel

unread,
Nov 8, 2009, 10:00:15 PM11/8/09
to
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


Seepy

unread,
Nov 20, 2009, 5:55:58 AM11/20/09
to
On 9 nov, 04:00, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:

> 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 decrearel 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)crearlos modelos de trabajo de quien consulta

Hola a todos, muchas gracias por sua yuda. Tenía este mismo código con
algunas modificaciones funcionando 100% pero desde hoy y sin saber
porqué, ha dejado de funcionar la parte en la que se copia tras las
otras páginas en el nuevo report.
¿Alguien podría decierme porque?
Muchas gracias de antemano. Un saludo!

H�ctor Miguel

unread,
Nov 20, 2009, 3:41:18 PM11/20/09
to
hola (...), ?????

> Tenia este mismo codigo con algunas modificaciones funcionando 100%
> pero desde hoy y sin saber porque
> ha dejado de funcionar la parte en la que se copia tras las otras paginas en el nuevo report.
> Alguien podria decierme porque? ...

(en via de mientras) el ejemplo primero hace una copia de dos hojas a un libro nuevo y lo guarda con un nombre
despues, copia las hojas restantes "tras" la segunda hoja (claro, porque ya sabiamos que se copiaron dos)

en este caso, para poder decir "por que falla... algo", es necesario "ver lo que esta haciendo ese algo"
(por si puedes exponer el codigo tal como esta fallando ?)

saludos,
hector.

__ previos __


>> ... he estado probando con la grabadora de macros y tengo el siguiente codigo: (...)

>> Me gustaria saber si debo seguir ese codigo sobretodo la parte decrear el nuevo libro
>> y mover las dos hojas y como podr�a incluir en el libro creado otras hojas desde otro libro...

0 new messages