Excel - Pegar Archivos

   
Vista:

Pegar Archivos

Publicado por Maty (2 intervenciones) el 02/09/2007 19:57:02
Estimados amigos:
He construido un macro que trata de pegar dos archivos.
El archivo a pegar (Emisor.xls) contiene 16 hojas
El archivo al cual se pegaran esas hojas (Receptor.xls) contiene 4 hojas.
El macro lo he colocado en un archivo que llamo ArchivoExterno.xls

Todo parece en orden, sin embargo al correr dicho macro se detiene en la instrucción

Worksheets(MyArray(X)).Copy Before:=Workbooks("Receptor.xls").Sheets(5)

Presentando un cuadro de diálogo que dice:

Se ha producido el error ‘9’ en tiempo de ejecución:
Subíndice fuera del intervalo

A continuacion el macro completo:

Sub PegarArchivos() 'Macro colocado en ArchivoExterno.xls
Dim MyArray
Dim X As Long

Workbooks.Open Filename:="D:\Mis Documentos\Receptor.xls"
Workbooks.Open Filename:="D:\Mis Documentos\Emisor.xls"

Windows("Emisor.xls").Activate

MyArray = Array("Hoja1", "Hoja2", "Hoja3", "Hoja4", "Hoja5", "Hoja6", "Hoja7", "Hoja8", _
"Hoja9", "Hoja10", "Hoja11", "Hoja12", "Hoja13", "Hoja14", "Hoja15", "Hoja16")

For X = UBound(MyArray) To LBound(MyArray) Step -1
Worksheets(MyArray(X)).Move Before:=Workbooks("Receptor.xls").Sheets(5)
Next X

End Sub

Desde ya les agradezco la atención a esta consulta

Atentamente, Matty 
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pegar Archivos

Publicado por José Luis (700 intervenciones) el 02/09/2007 23:13:14
¿Y si las hojas no se llaman así?

Deberías hacer un For Each o contar el número de hojas,

NumHojas = Sheets.Count
For X = NumHojas To 1 Step -1

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pegar Archivos

Publicado por Maty (1 intervención) el 03/09/2007 00:07:18
Gracias Jose Luis. Pero cómo seria el For Next completo, porque si lo uso tal como lo tengo en el macro, me vuelve a dar el mismo mensaje. y gracias por tan pronta respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pegar Archivos

Publicado por José Luis (700 intervenciones) el 03/09/2007 09:35:37
La macro debe quedar así:

Sub PegarArchivos() 'Macro colocado en ArchivoExterno.xls
Dim MyArray
Dim X As Long

Workbooks.Open Filename:="D:\Mis Documentos\Receptor.xls"
Workbooks.Open Filename:="D:\Mis Documentos\Emisor.xls"

Windows("Emisor.xls").Activate

NumHojas = Sheets.Count
'Anular esta línea
'MyArray = Array("Hoja1", "Hoja2", "Hoja3", "Hoja4", "Hoja5", "Hoja6", "Hoja7", "Hoja8", _
"Hoja9", "Hoja10", "Hoja11", "Hoja12", "Hoja13", "Hoja14", "Hoja15", "Hoja16")

' El For se cambia
'For X = UBound(MyArray) To LBound(MyArray) Step -1
' por
For X = NumHojas To 1 Step -1

'Hay que añadir esto para reactivar el libro Emisor.xls
' Se puede poner después del worksheets(X).... pero obligaría a añadir
' un control del número de hoja movida para evitar que se intente activar
' un libro sin hojas (después de mover la última).
Windows("Emisor.xls").Activate
'El Worksheets(Myarray(X)... se cambia por
Worksheets(X).Move Before:=Workbooks("Receptor.xls").Sheets(5)

Next X

End Sub

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pegar Archivos

Publicado por Maty (2 intervenciones) el 03/09/2007 18:02:12
Gracias Jose Luis, pero que pena, al ejecutar tu macro, en la instrucción:
Worksheets(X).Move Before:=Workbooks("Receptor.xls").Sheets(5)
nuevamente aparece el mensaje:
Se ha producido el error ‘9’ en tiempo de ejecución:
Subíndice fuera del intervalo
Donde estará el problema?
Gracias de todas maneras por tu atención,
Maty
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pegar Archivos

Publicado por JAG (139 intervenciones) el 03/09/2007 18:24:51
No sera que falta generar la hoja en el Archivo RECEPTOR antes de copiar porque por lo que dices nteriormente solo tiene 4 hojas.......
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pegar Archivos

Publicado por José Luis (700 intervenciones) el 03/09/2007 20:37:56
O te faltan hojas en el Emisor o te faltan hojas en el Receptor.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pegar Archivos

Publicado por JAG (139 intervenciones) el 04/09/2007 03:32:53
Creo que debe ser el RECEPTOR porque la instruccion :

Worksheets(X).Move Before:=Workbooks("Receptor.xls").Sheets(5)

se refiere a la hoja 5 y solo tiene definidas 4 ......

Antes de hacer el copiar deberia definir la hoja......

Espero no estar equivocado ..............

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pegar Archivos

Publicado por Maty (1 intervención) el 05/09/2007 00:17:24
Creo que si estas equivocado, Sheets(5), significa la hoja inicial de las hojas a pegar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar