Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/01/2010, 05:37
Avatar de ceSharp
ceSharp
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Guardar datos de archivo excel2007 en varias hojas excel2003

hola delta132,

te paso una función que hace lo que tu pides y te explico:
'------------------------------------
Sub excel2003()
On Error GoTo msgError

'inicio es la variable que marcará el inicio de cada seleccion de filas
inicio = 1
'como vamos a ir cogiendo de 65000 en 65000 inicializamos contador a esta fila
contador = 65000
'almacenamos el nombre del libro 2007
libro2007 = ThisWorkbook.Name
'creamos un libro nuevo
Workbooks.Add
'guardamos el nombre
nuevoLibro = Workbooks.Item(2).Name

Dim hoja As Integer
hoja = 1
Do
'vamos al libro de excel 2007
Windows(libro2007).Activate
'seleccionamos el rango de las filas y las copiamos
Rows(inicio & ":" & contador).Select
Selection.Copy
'ahora vamos al libro nuevo y pegamos las filas copiadas
Windows(nuevoLibro).Activate
Sheets("Hoja" & hoja).Select
Selection.PasteSpecial
'añadimos una hoja nueva al libro
Sheets.Add After:=Sheets(Sheets.Count)
contador = contador + 65000
inicio = inicio + 65000
hoja = hoja + 1
Loop Until contador > 455000

'y guardamos como libro excel 2003
ActiveWorkbook.SaveAs Filename:= _
"C:\" & "Transformado_" & nuevoLibro, FileFormat:= _
xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
MsgBox ("Tarea Finalizada")
Exit Sub

msgError:
MsgBox ("Se ha producido un error")
End Sub
'----------------------------------------------------
1) Esta función la debes ejecutar en tu libro 2007 mediante un botón asignándole el nombre de la misma al susodicho botón.
2) Como has hablado de más o menos 400000 registros, la función recoge hasta la fila 455000 y luego se para
3) El archivo excel 2003 lo guarda en C:\ directamente, con el nombre que excel haya creado al nuevo libro (normalmente es libro1.xls) y he añadido una cadena de texto ('_Transformado') para evitar coincidencias (que en C:\ tengas un excel que se llame Libro1.xls --> de esta manera tendrás un archivo en C:\ llamado Transformado_Libro1.xls)
4) La función según va copiando filas va creando nuevas hojas en el libro nuevo. como excel ya abre nuevos libros con 3 hojas por defecto, al final te sobrarán 3 hojas donde no hay nada (la hoja ocho, nueve y diez)

la función se puede mejorar, pero supongo que es una tarea fija que tienes que hacer y tampoco es plan de refinarla al 100%, no?

bueno espero que te sirva. si tienes dudas ya sabemos por donde andamos.

salu2