Hola Triby, gracias por la respuesta.
Las variables las defini como arreglo de enteros, ya que son los valores de fila supuse que no deberian llenar la memoria.
Cuando ejecuto la macro, me envia el error cuando intenta ejecutar esa linea.
pego todo el codigo para que ver el flujo completo, y si de algo sirve, tengo una versión que no se conecta a base de datos, por si necesitas algo mas.
Código:
Sub Agrupa_movimientos()
'Macro para unificar todos los archivos de movimientos regionales en uno solo para su procesamiento
'Declaración de variables
Dim Serie, subserie As Object
Dim fila, i, total As Integer
Dim copiar, rangos(1 To 16), macro, nombre, ruta, celdas(1 To 16) As String
i = 1
macro = Range("D10").Value
nombre = Range("D6").Value
total = 3
'Comienza proceso
'Ciclo For para almacenar las columnas a copiar
For Each subserie In Range("F2:F17")
celdas(i) = subserie
i = i + 1
Next
'Comienza Ciclo para copiado de información
For Each Serie In Range("B2:B11")
'Se arma el String para abrir el archivo correcto
ActiveWorkbook.Worksheets("Datos").Select
ruta = nombre & Serie
'Abre el archivo del que se tomaran los datos
Workbooks.Open Filename:=ruta
'Codigo de retraso para actualización de información
Call WaitOpen
ActiveWorkbook.Worksheets("Plantilla").Select
Range("C999").Select
Selection.End(xlUp).Select
fila = ActiveCell.Row
If fila = 3 Then
'Recorrido de arreglos para copiar columnas
For i = 1 To 16
rangos(i) = celdas(i) & "3"
If i = 1 Then
copiar = rangos(i)
Else
copiar = copiar & "," & rangos(i)
End If
Next
Range(copiar).Copy
'cambiamos de archivo para pergar los datos
Windows(macro).Activate
ActiveWorkbook.Worksheets("Plantilla").Select
Range(celdas(i) & total).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Regresamos al archivo origen para copiar la siguiente columna
Windows(Serie).Close (False)
ElseIf fila > 3 Then
'Recorrido de arreglos para copiar columnas
For i = 1 To 16
rangos(i) = celdas(i) & "3:" & celdas(i) & fila
If i = 1 Then
copiar = rangos(i)
Else
copiar = copiar & "," & rangos(i)
End If
Next
Range(copiar).Copy
'cambiamos de archivo para pergar los datos
Windows(macro).Activate
ActiveWorkbook.Worksheets("Temporal").Select
Range("A" & total).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A" & total).Select
'Regresamos al archivo origen para copiar la siguiente columna
Windows(Serie).Activate 'aqui se genera el error
Range("C3").Select
ActiveWindow.Close
Else
End If
'Asignamos la nueva posición de pegado para el archivo destino
total = total + fila - 2
'Cerramos el archivo origen para continuar el ciclo
ActiveWorkbook.Close (False)
Next
End Sub