FIRST OFF MANY THANKS. I FEEL SO... DOH !

Sometimes the simplest. Just could not get the structure right in the conversion. ARGH

I'd like to share some additional EXCEL COM work I've managed to compile and use over the years.
Most of it is simple but perhaps someone can fine them useful.
Many are from talented coders that I've incorporated, esp the functions.

Thanks again.

auto fitting a range of cells
 Code:
$oXL.Range("A1:C1").EntireColumn.AutoFit


writing a data set to an excel range:
 Code:
$ARRAYS = UCase($BKNASSOURCE),UCase($BKNASTRUNCSOURCE),UCase($NASARRAY[5])
$oXL.Range("A1:C1").Value = $ARRAYS


an excel sort routine
 Code:
xlSort("A",,,)

Function xlSort($ByCol1,Optional $Order1,Optional $ByCol2,Optional $Order2,Optional $ByCol3,Optional $Order3)
	$xlHeader = 1 ; Sheet has a header 1=Yes 2=No
	Dim $ParmOk,$SortStartRow
	If $xlHeader = 1
		$SortStartRow = '2'
	Else
		$SortStartRow = '1'
	EndIf
	$ParmOk = 1
	For $i = 1 to 3 ; Parameter check
		$RC = Execute("
			If '' + $$Order$i = ''
				$$Order$i = 1 ; Default sortorder, ascending
			Else
				Select
					Case $$Order$i = 'A'
						$$Order$i = 1
					Case $$Order$i = 'D'
						$$Order$i = 2
					Case $$Order$i <> 1 And $$Order$i <> 2 ; Illegal parameter
						$$ParmOk = 0
				EndSelect
			EndIf
			$$ByCol$i = $$ByCol$i + '$SortStartRow'
		") ; End Execute
		If Not $ParmOk
		Return
	EndIf
	Next
	$RC = $oXl.Cells.Select
	If $ByCol2 <> $SortStartRow
		If $ByCol3 <> $SortStartRow
			$RC = $oXl.Selection.Sort($oXl.ActiveSheet.Range("$ByCol1"),$Order1,,
			$oXl.ActiveSheet.Range("$ByCol2"),$Order2,
			$oXl.ActiveSheet.Range("$ByCol3"),$Order3,$xlHeader)
		Else
			$RC = $oXl.Selection.Sort($oXl.ActiveSheet.Range("$ByCol1"),$Order1,,
			$oXl.ActiveSheet.Range("$ByCol2"),$Order2,,,$xlHeader)
		EndIf
	Else
		$RC = $oXl.Selection.Sort($oXl.ActiveSheet.Range("$ByCol1"),$Order1,,,,,,$xlHeader)
	EndIf
EndFunction



this adds an excel sheet to an open workbook

 Code:
xlAddSheet($oXL, '+Sheet2', 'SHARES', 33)

     Function xlAddSheet($_ID, OPTIONAL $_Position, OPTIONAL $_Name, OPTIONAL $_TabColor)
	Dim $_, $_Err
	If Left($_Position, 1) = '+'
		$_Position = SubStr($_Position, 2)		; trim leading '+'
		$_ = $_ID.WorkSheets.Add(, $_ID.WorkSheets($_Position), 1)
	Else
		If $_Position
			If Left($_Position, 1) = '-'
				$_Position = SubStr($_Position, 2)	; trim leading '-'
			EndIf
			$_ = $_ID.WorkSheets.Add($_ID.WorkSheets($_Position), , 1)
		Else
			$_ = $_ID.WorkSheets.Add
		EndIf
	EndIf
	$_Err = @ERROR				; save the creation status
	If $_Name
		$_ID.ActiveSheet.Name = $_Name		; define the name, if supplied
	EndIf
	If $_TabColor
		$_ID.ActiveSheet.Tab.ColorIndex = $_TabColor
	EndIf
	$xlAddSheet = $_ID.ActiveSheet.Name		; return the name of the new sheet
	EXIT $_Err
EndFunction



some simple formatting and function code
 Code:
	$oXL.ActiveWindow.FreezePanes = True
	$oXL.Range("A1:P1").Font.Bold = 1
	$oXL.Range("A1:P1").AutoFilter
	$oXL.Range("A1:P1").Interior.Colorindex = 15
	$oXL.Range("A1:P1").ColumnWidth = 42 
        $oXL.Range("E1").EntireColumn.Hidden = True
        $oXL.Range("P1:Q1").EntireColumn.AutoFit
        $oXL.APPLICATION.Calculation = 1  ; turns auto calc on/off. Great to turn it off. Do all your formatting then turn it on again before closing file. this way your not recalculating after each individual change.
        $oXL.Workbooks.Close
        $oXL.Quit


various ways of saving excel files
 Code:
Function xlSave($FileName)
		$RC = $oXl.ActiveWorkbook.SaveAs($FileName,-4158,"","",0,0,,,0)
		; (2003) xlworkbooknormal = -4143
		;       51 = xlopenxmlworkbook (without macro's in 2007-2010, xlsx)
		;	52 = xlopenxmlworkbookmacroenabled (with or without macro's in 2007-2010, xlsm)
		;	50 = xlexcel12 (excel binary workbook in 2007-2010 with or without macro's, xlsb)
		;	56 = xlexcel8 (97-2003 format in excel 2007-2010, xls)
		; ".csv": fileformatnum = 6 commas
		; ".txt": fileformatnum = -4158 tabs
		; ".prn": fileformatnum = 36
EndFunction 



rename an excel sheet

 Code:
Function xlSheetName($_ID, OPTIONAL $_Old, OPTIONAL $_New)
	; if Old name not provided, return the active sheet name
	If $_Old = ''
		$xlSheetName = $_ID.ActiveSheet.Name
		EXIT @ERROR
	EndIf
	; complain if New name isn't provided
	If VarType($_New) = 0
		EXIT 87
	EndIf
	; Rename the sheet
	$_ID.WorkSheets($_Old).Name = $_New
	EXIT @ERROR
EndFunction