Hey every1 sorry bout this but cant seem to figure out how to do this atm.
I have the below code referenced to Excel 12.0 reference and as different customer have different version of Excel I think it would be a good idea to change to latebinding.
Does any1 know any easy way of changing my code from early to late binding.
Cheers
Jason
I have the below code referenced to Excel 12.0 reference and as different customer have different version of Excel I think it would be a good idea to change to latebinding.
Does any1 know any easy way of changing my code from early to late binding.
Cheers
Jason
Code:
Public gobjexcel As excel.Application
Public Function excelquery(strsql As String)
Dim rstdata As ADODB.Recordset
Dim rstcount As ADODB.Recordset
Dim fld As ADODB.field
Dim rng As excel.Range
Dim objws As excel.worksheet
Dim introwcount As Integer
Dim intcolcount As Integer
Dim qcount As Integer
DoCmd.Hourglass True
Set rstdata = New ADODB.Recordset
rstdata.ActiveConnection = CurrentProject.Connection
Set rstcount = New ADODB.Recordset
rstcount.ActiveConnection = CurrentProject.Connection
If CreateRecordset(rstdata, rstcount, strsql) Then
If CreateExcelObj() Then
gobjexcel.Workbooks.Add
gobjexcel.Application.DisplayAlerts = False
Set objws = gobjexcel.ActiveSheet
introwcount = 1
intcolcount = 1
For Each fld In rstdata.Fields
If fld.Type <> adLongVarBinary Then
objws.Cells(1, intcolcount).VALUE = fld.Name
intcolcount = intcolcount + 1
End If
Next fld
objws.Range("A2").CopyFromRecordset rstdata, 500
With gobjexcel
.Columns("A:C").Select
.Columns("A:C").EntireColumn.AutoFit
.Range("A1").Select
.ActiveCell.CurrentRegion.Select
Set rng = .Selection
.Columns("b:c").Select
.Selection.NumberFormat = "$#,##0.00"
.Rows("1:1").Select
.Selection.Font.Bold = True
With .Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
.Sheets("sheet1").Select
.Sheets("sheet1").Name = "SALES FIGURES"
.Sheets("sheet2").Select
.Sheets("sheet2").Name = "COMPARISON GRAPH"
.ActiveSheet.ChartObjects.Add(0, 0, 607.75, 301).Select
.ActiveChart.ChartWizard Source:=.Sheets("SALES FIGURES").Range(rng.address), _
gallery:=xlColumn, _
Format:=6, PlotBy:=xlColumns, categorylabels:=1, serieslabels _
:=1, HasLegend:=1, Title:="SALES COMPARISON REPORT", categorytitle _
:="DAYS", valuetitle:="$ AMOUNT", extratitle:=""
.Visible = True
' .Range("A22").Select
' .ActiveCell.FormulaR1C1 = "PERIOD 1 ="
' .Range("A23").Select
' .ActiveCell.FormulaR1C1 = "PERIOD 2 ="
' .Range("A24").Select
' .ActiveCell.FormulaR1C1 = "PERIOD 3 ="
' .Range("A25").Select
' .ActiveCell.FormulaR1C1 = "PERIOD 4 ="
.Sheets("Sheet3").Select
.ActiveWindow.SelectedSheets.Delete
End With
Else
MsgBox "Excel Could not load"
End If
Else
MsgBox "too many records to send"
End If
DoCmd.Hourglass False
Set rng = Nothing
Set objws = Nothing
Set gobjexcel = Nothing
End Function
Function CreateRecordset(rstdata As ADODB.Recordset, _
rstcount As ADODB.Recordset, _
strsql As String)
Dim rst As ADODB.Recordset
' On Error GoTo CreateRecordset_Err
'Create recordset that contains count of records in query
rstcount.Open strsql
'rstcount.Open "Select Count(*) As NumRecords from " & strTableName
'If more than 500 records in query result, return false
'Otherwise, create recordset from query
If rstcount.RecordCount > 500 Then
CreateRecordset = False
Else
rstdata.Open strsql
CreateRecordset = True
End If
CreateRecordset_Exit:
Set rstcount = Nothing
Exit Function
CreateRecordset_Err:
MsgBox "Error # " & Err.Number & ": " & Err.DESCRIPTION, , "RECORDSET ERROR"
Resume CreateRecordset_Exit
End Function
Function CreateExcelObj() As Boolean
' On Error GoTo CreateExcelObj_Err
CreateExcelObj = False
'Attempt to Launch Excel
Set gobjexcel = New excel.Application
CreateExcelObj = True
CreateExcelObj_Exit:
Exit Function
CreateExcelObj_Err:
MsgBox "Couldn't Launch Excel!!", vbCritical, "Warning!!"
CreateExcelObj = False
Resume CreateExcelObj_Exit
End Function
Sub CloseExcel()
If Not gobjexcel Is Nothing Then
gobjexcel.DisplayAlerts = False
gobjexcel.Quit
End If
CloseExcel_Exit:
Set gobjexcel = Nothing
Exit Sub
CloseExcel_Err:
MsgBox "Error # " & Err.Number & ": " & Err.DESCRIPTION
Resume CloseExcel_Exit
End Sub