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

#6 Seepy
20/11/2009 - 11:55 | Informe spam
On 9 nov, 04:00, "Héctor Miguel"
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
(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



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!
Respuesta Responder a este mensaje
#7 Héctor Miguel
20/11/2009 - 21:41 | Informe spam
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...



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
(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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida