Sub subCreateReport(pReportName As String)
Dim sql As String, rst As DAO.Recordset
Dim sQueryToRun As String, sQueryToExport As String
Dim iWorksheet As Integer, iWorksheets As Integer, iColumn As Integer, iColumns As Integer, sFreezeCell As String
Dim sRange As String, sValue As String
Dim sColumn As String, sColumnRevised As String, sColumnFormat As String
Dim sReportPath As String, sReportFileName As String, sReportFileNameFull As String
Dim sTeamMemberName As String, dtNow As Date
Call subShowMessage("Running report: " + pReportName, "Report")
dtNow = Now()
sTeamMemberName = Replace(Replace(Replace(gsTeamMemberName, ",", ""), " ", ""), "'", "")
If sTeamMemberName = "" Then Exit Sub
sReportPath = gsReportPath + sTeamMemberName
If fnDirExists(sReportPath) = False Then
MkDir sReportPath
End If
'Run queries as needed
sql = "SELECT * FROM usysLOCtblReportsQueries"
sql = sql + " WHERE ReportName = '" + pReportName + "'"
sql = sql + " ORDER BY QueryToRun"
Set rst = CurrentDb.OpenRecordset(sql)
If Not rst.EOF Then
rst.MoveFirst
While Not rst.EOF
sQueryToRun = rst("QueryToRun")
CurrentDb.Execute (sQueryToRun)
rst.MoveNext
Wend
End If
rst.Close
Set rst = Nothing
Select Case pReportName
Case "Summary of Active Projects"
sReportFileName = "SummaryActiveProjects_" + Format(dtNow, "YYYY_MM_DD_HH_MM") + ".xlsx"
sReportFileNameFull = sReportPath + "\" + sReportFileName
If fnFileExists(sReportFileNameFull) Then Stop
sQueryToExport = CStr(fnLookupReportItem(pReportName, "QueryToExport"))
iWorksheets = CInt(fnLookupReportItem(pReportName, "Worksheets"))
iColumns = CInt(fnLookupReportItem(pReportName, "Columns"))
sFreezeCell = "G3"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, sQueryToExport, sReportFileNameFull, True
Case Else
Exit Sub
End Select
Set gobjExcel = CreateObject("Excel.Application")
Set gobjBook = gobjExcel.Workbooks.Open(sReportFileNameFull, False, False)
If gsTeamMemberUsername = gsRoy Then
gobjExcel.Visible = False
'Stop
Else
gobjExcel.Visible = False
End If
For iWorksheet = 1 To iWorksheets
gobjBook.Sheets(iWorksheet).Activate
Set gobjSheet = gobjBook.ActiveSheet
gobjExcel.ActiveWindow.zoom = 85
gobjSheet.Range("1:1").WrapText = True
gobjSheet.Range("1:1").Font.Bold = True
gobjSheet.UsedRange.NumberFormat = "General"
gobjSheet.UsedRange.Value = gobjSheet.UsedRange.Value
gobjSheet.UsedRange.AutoFilter
gobjSheet.UsedRange.Columns.AutoFit
gobjSheet.Range("1:1").EntireRow.INSERT
gobjSheet.Range("A1") = pReportName
gobjSheet.Range("A1").Font.Bold = True
gobjSheet.Name = pReportName
gobjSheet.Range(sFreezeCell).select
gobjExcel.ActiveWindow.FreezePanes = True
For iColumn = iColumns To 1 Step -1 'have to work backwards since deleting some columns
If gobjSheet.Columns(iColumn).ColumnWidth > 100 Then
gobjSheet.Columns(iColumn).ColumnWidth = 100
ElseIf gobjSheet.Columns(iColumn).ColumnWidth < 10 Then
gobjSheet.Columns(iColumn).ColumnWidth = 10
End If
sColumn = CStr(gobjSheet.cells(2, iColumn)) 'First row has client name
'If sColumn = "ProjectPhaseNum" Then Stop
sColumnRevised = fnLookupReportColumn(pReportName, sColumn, "ColumnRevised")
If sColumnRevised = "DELETE" Then
gobjSheet.Columns(iColumn).Delete
Else
gobjSheet.cells(2, iColumn) = sColumnRevised
End If
sColumnFormat = fnLookupReportColumn(pReportName, sColumn, "ColumnFormat")
If sColumnFormat <> "" Then gobjSheet.Columns(iColumn).NumberFormat = sColumnFormat
'If sValue <> "PID" And Left(sValue, 3) = "PID" Then gobjSheet.Columns(iColumn).EntireColumn.Delete
Next iColumn
Next iWorksheet
gobjSheet.Range("A1").select
gobjBook.Save
Set gobjSheet = Nothing
Set gobjBook = Nothing
gobjExcel.Visible = True
Set gobjExcel = Nothing
Call subShowMessage
End Sub