Code:
'Uses Excel "Resize" to avoid alpha column references when assigning an 'array to a range #DIM ALL #COMPILE EXE "xlresize.exe" #INCLUDE "ExcelApp.inc" FUNCTION PbcomXlResize (lRows AS LONG,lCols AS LONG) AS LONG DIM oExcelApp AS ExcelApplication DIM oExcelWorkbook AS ExcelWorkbook DIM vExcelWorkbook AS VARIANT DIM oExcelWorkSheet AS ExcelWorkSheet DIM vExcelWorksheet AS VARIANT DIM vFirstRow AS VARIANT DIM vFirstCol AS VARIANT DIM oFirstCellRange AS ExcelRange DIM vFirstCellRange AS VARIANT DIM oOutRange AS ExcelRange DIM vOutRange AS VARIANT DIM vRows AS VARIANT DIM vCols AS VARIANT DIM vData AS VARIANT DIM lRowCount AS LONG DIM lColCount AS LONG DIM vTrue AS VARIANT ON ERR GOTO Terminate SET oExcelApp = ExcelApplication IN $PROGID_ExcelApplication8 IF ISFALSE ISOBJECT(oExcelApp) THEN SET oExcelApp = NEW ExcelApplication IN $PROGID_ExcelApplication8 END IF LET vTrue = 1 OBJECT LET oExcelApp.Visible = vTrue OBJECT CALL oExcelApp.WorkBooks.Add TO vExcelWorkbook SET oExcelWorkbook = vExcelWorkbook OBJECT CALL oExcelWorkBook.WorkSheets.Add TO vExcelWorkSheet SET oExcelWorkSheet = vExcelWorkSheet DIM sArray (1 TO lrows, 1 TO lcols) AS STRING FOR lRowCount = 1 TO lrows FOR lColCount = 1 TO lcols sArray(lRowCount,lColCount) = STR$(lRowCount) & STR$(lColCount) NEXT lColCount NEXT lRowCount LET vFirstRow = 5 LET vFirstCol = 5 OBJECT GET oExcelWorkSheet.Cells(vFirstRow,vFirstCol) TO vFirstCellRange SET oFirstCellRange = vFirstCellRange LET vRows = UBOUND(sArray,1) LET vCols = UBOUND(sArray,2) OBJECT GET oFirstCellRange.Resize(vRows,vCols) TO vOutRange SET oOutRange = vOutRange LET vData = sArray() OBJECT LET oOutRange.Value = vData Terminate: SET oExcelApp = NOTHING SET oExcelWorkbook = NOTHING SET oExcelWorkSheet = NOTHING SET oFirstCellRange = NOTHING SET oOutRange = NOTHING FUNCTION = 0 END FUNCTION FUNCTION PBMAIN DIM lReturnValue AS LONG lReturnValue = PbcomXlResize(1000,5) END FUNCTION
Comment