Ayuda sobre DW Externo y Excel

Hola compañeros, que tal!, aquí nuevamente con un problema en PB, les muestro el script de una función que transporta los registros de un DW externo a un archivo excel, hago uso de este script debido a que los archivos excel tienen un límite de 1048576 registros, pero el select genera un reporte a fin de año de casi 2kk de registros, además hago esto porque los usuarios necesitan esta Data en un archivo Access, y buscando y buscando la única manera que me resulta es importando un archivo excel a un nuevo archivo access mediante una DLL que hice en VB6, y es por tal que necesito generar ese archivo excel.
Cabe resaltar que el script funciona (en teoría), pero sólo me permite generar el archivo excel sólo cuando el reporte presenta 510000 registros, si quiero generar un excel desde 510001 registros a más, me sale un mensaje de error y el PB se cierra por completo, la verdad no sé a que se debe o es que este script no va y hay una manera mas productiva de realizar lo que deseo, espero su gran apoyo y espero haber explicado bien, he aquí el script y adjunto la imagen del mensaje por si ayuda a solucionarlo:

oleobject myoleobject
integer rc, i, count, j, colcount, rep
string mydata, colname, colnames, ls_select, ls_dwsyntax, ls_err, el
rep = truncate(dw_2.rowcount()/1048575,0)
if mod(dw_2.rowcount(),1048575) > 0 then rep = rep +1
myoleobject = CREATE oleobject
rc = myoleobject.ConnectToNewObject("Excel.Application")
IF rc <> 0 THEN
MessageBox ( "Error", String ( rc ) )
Return
END IF
ls_select = string(dw_2.object.datawindow.table.select)
ls_dwsyntax = SQLCA.SyntaxFromSQL( ls_select, "Style(Type=tabular)", ls_err)
dw_3.Create (ls_dwsyntax, ls_err)
IF ls_err <> '' THEN
MessageBox ("error - Sintaxis", ls_err)
else
dw_3.SetTransObject (SQLCA)
end if
try
myoleobject.Application.Visible = false
myoleobject.Workbooks.Add()
for i = 1 to rep
 myoleobject.activeworkbook.sheets(i).name = as_tabla+string(i)//"reporte"+string(i)
 dw_3.reset()
 dw_2.RowsCopy(((1048574 * (i - 1)) + i), (1048575 * i), Primary!, dw_3, 1, Primary!)
 colcount = integer(dw_3.object.DataWindow.column.count)
 for j = 1 to colcount
 colname = dw_3.describe("#"+string(j)+".Name")
 choose case j
 case 1
 colnames = colname
 case else
 colnames = colnames + '~t' + colname
 end choose
 next
 colnames = colnames + "~r~n"
 mydata = dw_3.object.datawindow.data
 clipboard(colnames + mydata)
 myoleobject.activeworkbook.sheets(i).paste()
next
 //////
for i = 1 to myoleobject.activeworkbook.sheets.count()
 el = myoleobject.activeworkbook.sheets(i).name
 if el <> as_tabla+string(i) then exit
next
if i = 2 then
 myoleobject.activeworkbook.sheets(2).Delete
 myoleobject.activeworkbook.sheets(2).Delete
elseif i = 3 then
 myoleobject.activeworkbook.sheets(3).Delete
end if
 //////
myoleobject.activeworkbook.saveas(as_destino)
myoleobject.activeworkbook.close()
myoleobject.Application.quit
myoleobject.DisconnectObject()
catch ( exception e )
MessageBox ( "Error", e.GetMessage() )
finally
Destroy myoleobject
end try

Añade tu respuesta

Haz clic para o