I wouldn't actually be creating a new query for each manager. Untested, but try this:
[vba]Sub MonthlyUtil()
Dim qdf As DAO.QueryDef
Dim dbs As DAO.Database
Dim rstMgr As DAO.Recordset
Dim strSQL As String, strMgr As String
Set dbs = CurrentDb
'NEW
Set qdf = dbs.QueryDefs("zExportQuery")
' I don't think you need this section at all
'strTemp = dbs.TableDefs(0).Name
'strSQL = "SELECT * FROM [" & strTemp & "] WHERE 1=0;"
'Set qdf = dbs.CreateQueryDef(strQName, strSQL)
'qdf.Close
'strTemp = strQName
strSQL = "SELECT DISTINCT EntityID FROM qryMonthRep;"
' not changing any data, so open snapshot rather than dynaset
Set rstMgr = dbs.OpenRecordset(strSQL, dbOpenSnapshot, dbReadOnly)
Do While rstMgr.EOF = False
strMgr = DLookup("Entity", "Clients", _
"EntityID = " & Chr(34) & rstMgr!EntityID.Value & Chr(34))
strSQL = "SELECT * FROM qryMonthRep WHERE " & _
"EntityID = " & rstMgr!EntityID.Value & ";"
qdf.SQL = strSQL
' changed to reference query name
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
qdf.Name, "H:\SMART\HBG\Hospital Utilization\" & strMgr & Format(Now(), _
"ddMMMyyyy_hhnn") & ".xls"
rstMgr.MoveNext
Loop
rstMgr.Close
qdf.Close
dbs.Close
Set rstMgr = Nothing
Set dbs = Nothing
Set qdf = Nothing
End Sub
[/vba]