Les,
Good point! That was my next challange, I have not been able to call the results outside the udf! I think I just missed the endfunction in my cut and paste. The complete code is as follows (minus kixform)
Code:

$ListViewEx1.Items.Clear
$Populate = Readexcel('C:\Clients\Able\Price.xls')
;Excel file is a hundred or so rows of data 6 columns wide

For $LColumn=0 to 6
$List = $ListViewEx1.items.add

For $Lcell=0 to ubound($a)
List.SubItems($Lcell).text = $b[$Lcolumn,$Lcell]
Next
Next


$Form.Show
While $Form.Visible
$=Execute($Form.DoEvents())
Loop
Exit 1

;*************************************

FUNCTION READEXCEL($cfilename)
DIM $Rc,$Column,$Cell,$oXL,$a[300],$b[6,300]
;$a=1,2,3,4,5,6,7;columns and order to be read
IF 0=EXIST($cfilename) ;insure the file exists
?'Excel file not found'
SLEEP 4
RETURN ;leave
ENDIF
$oXL=Createobject('Excel.application')
;Check to insure that Excel is available
IF 0<>@error ?@error ' Excel Application is not found'
SLEEP 4
RETURN
ENDIF
$Rc=$oXL.workbooks.open($cfilename)

For $Column=0 to 6
For $cell=0 to 300;ubound($a)
$b[$column,$cell]=$oXL.cells($column,$cell)
Next
Next

$oXL.quit ;quit Excel
$oXL=0 ;set the object to 0

ENDFUNCTION



I have a little cleaning to do... I did not use $a at all and need to global dim the array. I have been trying to learn arrays from others code. Not understaing all of it this code is a bit of a mess!