exportar de un excel a otro excel

04/05/2008 - 23:39 por Diana | Informe spam
Estoy creando una aplicación con menú personalizado y quisiera agregar en el
menú la opción de exportar la hoja activa a otro excel. Sé crear el archivo
excel pero no sé cómo escribir la instrucción para que copie la información
del rango A1:P10000 de la hoja activa de la aplicación en el nuevo libro de
excel con los mismos formatos que la hoja activa.
Qué instrucción inserto en el siguiente código para que haga ésto?
Sub Exportar()
Dim xlObj As Object
Set xlObj = CreateObject("Excel.Application")
With xlObj
.Visible = True
.Workbooks.Add
With .ActiveWorkbook.Worksheets(1)
.Activate
End With
End With
End Sub

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
05/05/2008 - 05:29 | Informe spam
hola, Diana !

Estoy creando una aplicacion con menu personalizado y quisiera agregar... la opcion de exportar la hoja activa a otro excel.
Se crear el archivo excel pero no se como escribir la instruccion para que copie la informacion del rango A1:P10000
de la hoja activa de la aplicacion en el nuevo libro de excel con los mismos formatos que la hoja activa.



- hay alguna razon "de peso" para que deba ser (precisamente) el rango A1:P10000 ?
(o se trata solo de un "estimado" de hasta donde podria haber informacion en la hoja activa) -?-

- p.e. la siguiente instruccion "crea" un libro nuevo con una copia "fiel" de la hoja que le indiques: <objeto_hoja>.Copy
(incluye formatos, alto/ancho de fila/columna, formulas, vinculos, objetos, macros en su modulo de codigo, etc. etc. etc.)

- o... si solo quieres pasar valores, luego de hacer la copia, puedes convertir todo a valores "estaticos"
(existen dos o mas tecnicas, solo asegurate de que dicha hoja NO tiene codigo en su modulo de clase, ni macros vinculadas)

- tampoco estoy muy seguro de que metodos funcionen (mejor/peor) cuando se utilizan medios de automatizacion (createobject)

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

__ el codigo expuesto __
Que instruccion inserto en el siguiente codigo para que haga esto?
Sub Exportar()
Dim xlObj As Object
Set xlObj = CreateObject("Excel.Application")
With xlObj
.Visible = True
.Workbooks.Add
With .ActiveWorkbook.Worksheets(1)
.Activate
End With
End With
End Sub
Respuesta Responder a este mensaje
#2 Diana
05/05/2008 - 15:43 | Informe spam
Hola Héctor Miguel,

La idea de copiar sólo el rango A1:P10000 de la hoja activa es porque en el
rango AA1:AZ60 hay ciertas fórmulas que cargan algunos datos al área
A1:P10000. De todos modos no sería muy importante ya que asumo que el
ususario no va a "espiar" la hoja más allá del rango activo. La aplicación
sí tiene módulo de clase pero creo que te refieres a que el nuevo libro
creado no debe tener módulo de clase.
Traté de incluir la instrucción <objeto_hoja>.Copy pero no funciona. Debo
estar haciendo algo mal porque me crea un nuevo libro.
Cómo debería incluir esta instrucción para que copie la hoja activa de la
aplicación?
Gracias,
Diana


"Héctor Miguel" escribió en el mensaje
news:
hola, Diana !

Estoy creando una aplicacion con menu personalizado y quisiera agregar...
la opcion de exportar la hoja activa a otro excel.
Se crear el archivo excel pero no se como escribir la instruccion para
que copie la informacion del rango A1:P10000
de la hoja activa de la aplicacion en el nuevo libro de excel con los
mismos formatos que la hoja activa.



- hay alguna razon "de peso" para que deba ser (precisamente) el rango
A1:P10000 ?
(o se trata solo de un "estimado" de hasta donde podria haber informacion
en la hoja activa) -?-

- p.e. la siguiente instruccion "crea" un libro nuevo con una copia "fiel"
de la hoja que le indiques: <objeto_hoja>.Copy
(incluye formatos, alto/ancho de fila/columna, formulas, vinculos,
objetos, macros en su modulo de codigo, etc. etc. etc.)

- o... si solo quieres pasar valores, luego de hacer la copia, puedes
convertir todo a valores "estaticos"
(existen dos o mas tecnicas, solo asegurate de que dicha hoja NO tiene
codigo en su modulo de clase, ni macros vinculadas)

- tampoco estoy muy seguro de que metodos funcionen (mejor/peor) cuando se
utilizan medios de automatizacion (createobject)

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

__ el codigo expuesto __
Que instruccion inserto en el siguiente codigo para que haga esto?
Sub Exportar()
Dim xlObj As Object
Set xlObj = CreateObject("Excel.Application")
With xlObj
.Visible = True
.Workbooks.Add
With .ActiveWorkbook.Worksheets(1)
.Activate
End With
End With
End Sub




Respuesta Responder a este mensaje
#3 Héctor Miguel
05/05/2008 - 17:06 | Informe spam
hola, Diana !

__ 1 __
La idea de copiar solo el rango A1:P10000 de la hoja activa es porque en... AA1:AZ60
hay ciertas formulas que cargan algunos datos al area A1:P10000.
De todos modos no seria muy importante ya que asumo que el ususario no va a "espiar" la hoja mas alla del rango activo.



1) luego de la "creacion" de un libro (nuevo) que contendria (solo) la hoja indicada por la instruccion: <objeto_hoja>.Copy
podrias convertir a valores (eliminando formulas pero) conservando formatos Y... eliminar las columnas/filas "sobrantes"

__ 2 __
La aplicacion si tiene modulo de clase pero creo que te refieres a que el nuevo libro creado no debe tener modulo de clase.



2) me refiero a que "la hoja" (que vas a copiar) NO debiera contener codigos en "su" modulo de clase (worksheet_change, etc.)
no a los modulos de clase que pudiera tener tu aplicacion (vb stand-alone ?, otra ?)

__ 3 __
Trate de incluir la instruccion <objeto_hoja>.Copy pero no funciona. Debo estar haciendo algo mal porque me crea un nuevo libro.



3) precisamente, "esa" es la intencion: crer un libro nuevo con (solo) la hoja que le indiques en "copia fiel" (formatos, etc.)
despues puedes "operar" la hoja (en el libro nuevo) segun tus necesidades (revisa el punto 1 anterior)

__ 3 __
Como deberia incluir esta instruccion para que copie la hoja activa de la aplicacion?



3) aqui me queda la duda (por el ejemplo que expusiste) de si vas a "crear" otra instancia de excel (un nuevo "createobject")
para "intercambiar" hojas con alguna instancia previa de excel donde ya hubieras establecido otro "createobject" -???-
ya que instancias separadas de una misma aplicacion (excel) no serian "comunicables" entre si (por medios de automatizacion)

si tienes algun detalle "en el tintero"... va siendo hora de exponerlo ;)
saludos,
hector.

__ el codigo expuesto __
Que instruccion inserto en el siguiente codigo para que haga esto?
Sub Exportar()
Dim xlObj As Object
Set xlObj = CreateObject("Excel.Application")
With xlObj
.Visible = True
.Workbooks.Add
With .ActiveWorkbook.Worksheets(1)
.Activate
End With
End With
End Sub
Respuesta Responder a este mensaje
#4 Diana
05/05/2008 - 18:50 | Informe spam
Héctor Miguel,
Gracias por tu explicación. Mi problema es que no logro que me copie la hoja
activa luego de crear el objeto.
La hoja activa de la aplicación no tiene códigos en su módulo de clase.
Mi problema es que no sé cómo escribir la instrucción de que copie la hoja
activa de la aplicación en el objeto excel creado.
Los pasos son:
1. El usuario selecciona la opcion "Exportar informe a excel"en el menu.
2. Se dispara el código Exportar() antes expuesto. Aquí se creó el nuevo
libro de excel que se llama Libro1 con la hoja 1 activa.
3. Cómo escribo la instrucción de que copie la hoja activa de la aplicación
a la nueva Hoja1 del Libro1 creado por la rutina Exportar()?
4. No hay instancias previas donde haya creado otros CreateObject. Esta va a
ser laúnica. Lo que quiero lograr es que el usuario pueda copiar el informe
de la hoja activa a nuevo excel para poder trabajarlo.
5. Mi problema es que no logro escribir la instrucción dentro del código
expuesto para que copie la hoja activa y la pegue en la hoja 1 del libro 1
creado con CreateObject.
Como siempre muchas gracias por tu ayuda.
Diana







"Héctor Miguel" escribió en el mensaje
news:
hola, Diana !

__ 1 __
La idea de copiar solo el rango A1:P10000 de la hoja activa es porque
en... AA1:AZ60
hay ciertas formulas que cargan algunos datos al area A1:P10000.
De todos modos no seria muy importante ya que asumo que el ususario no va
a "espiar" la hoja mas alla del rango activo.



1) luego de la "creacion" de un libro (nuevo) que contendria (solo) la
hoja indicada por la instruccion: <objeto_hoja>.Copy
podrias convertir a valores (eliminando formulas pero) conservando
formatos Y... eliminar las columnas/filas "sobrantes"

__ 2 __
La aplicacion si tiene modulo de clase pero creo que te refieres a que el
nuevo libro creado no debe tener modulo de clase.



2) me refiero a que "la hoja" (que vas a copiar) NO debiera contener
codigos en "su" modulo de clase (worksheet_change, etc.)
no a los modulos de clase que pudiera tener tu aplicacion (vb
stand-alone ?, otra ?)

__ 3 __
Trate de incluir la instruccion <objeto_hoja>.Copy pero no funciona. Debo
estar haciendo algo mal porque me crea un nuevo libro.



3) precisamente, "esa" es la intencion: crer un libro nuevo con (solo) la
hoja que le indiques en "copia fiel" (formatos, etc.)
despues puedes "operar" la hoja (en el libro nuevo) segun tus
necesidades (revisa el punto 1 anterior)

__ 3 __
Como deberia incluir esta instruccion para que copie la hoja activa de la
aplicacion?



3) aqui me queda la duda (por el ejemplo que expusiste) de si vas a
"crear" otra instancia de excel (un nuevo "createobject")
para "intercambiar" hojas con alguna instancia previa de excel donde ya
hubieras establecido otro "createobject" -???-
ya que instancias separadas de una misma aplicacion (excel) no serian
"comunicables" entre si (por medios de automatizacion)

si tienes algun detalle "en el tintero"... va siendo hora de exponerlo
;)
saludos,
hector.

__ el codigo expuesto __
Que instruccion inserto en el siguiente codigo para que haga esto?
Sub Exportar()
Dim xlObj As Object
Set xlObj = CreateObject("Excel.Application")
With xlObj
.Visible = True
.Workbooks.Add
With .ActiveWorkbook.Worksheets(1)
.Activate
End With
End With
End Sub








Respuesta Responder a este mensaje
#5 Héctor Miguel
05/05/2008 - 20:43 | Informe spam
hola, Diana !

1) dejame insistir en que instancias separadas de una misma aplicacion NO "comparten" sus objetos (es decir)...
si ya tienes un excel corriendo, y creas una nueva instancia (createobject) no puedes "pasar objetos" entre ambas
(al menos, de forma "transparente", como pasar hojas del libro1 al libro2 cuando ambos libros son de la misma instancia)

2) pregunta "basica" (de mi parte) derivada de tu primer comentario: -> "... estoy CREANDO una aplicacion ..."
-> por que estas usando instrucciones del tipo: -> CreateObject("Excel.Application") -?????-
-> tu "aplicacion" son macros desde el mismisimo excel ?
-> tu "aplicacion" esta desarrollada en otros lenguajes -primarios- de programacion ? (vb, c, delphi, ...)

saludos,
hector.

__ la consulta original __
Mi problema es que no logro que me copie la hoja activa luego de crear el objeto.
La hoja activa de la aplicacion no tiene codigos en su modulo de clase.
Mi problema es que no se como escribir la instruccion de que copie la hoja activa de la aplicacion en el objeto excel creado.
Los pasos son:
1. El usuario selecciona la opcion "Exportar informe a excel"en el menu.
2. Se dispara el codigo Exportar() antes expuesto. Aqui se creo el nuevo libro de excel que se llama Libro1 con la hoja 1 activa.
3. Como escribo la instruccion de que copie la hoja activa de la aplicacion a la nueva Hoja1 del Libro1 creado por la rutina Exportar()?
4. No hay instancias previas donde haya creado otros CreateObject. Esta va a ser la unica.
Lo que quiero lograr es que el usuario pueda copiar el informe de la hoja activa a nuevo excel para poder trabajarlo.
5. ... no logro escribir la instruccion dentro del codigo expuesto para que copie la hoja activa
y la pegue en la hoja 1 del libro 1 creado con CreateObject.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida