ub PropagateNACObjectChanges()
Dim obj As Object
Dim strName As String
Dim qdf As DAO.QueryDef
Dim tdf As DAO.TableDef
Dim db As DAO.Database
Dim sngStart As Single, sngEnd As Single
On Error GoTo Err_Handler
DoEvents
Set db = CurrentDb
Application.Echo False
sngStart = Timer
For Each tdf In db.TableDefs
strName = tdf.Name
'exclude system tables and deleted tables (~TMPCLP*)
If Left(strName, 4) <> "MSys" And Left(strName, 2) <> "f_" And Left(strName, 7) <> "~TMPCLP" Then
DoCmd.OpenTable strName, acViewDesign
DoCmd.Close acTable, strName, acSaveYes
End If
Next tdf
For Each qdf In db.QueryDefs
strName = qdf.Name
'exclude deleted queries (~TMPCLP"), temp queries (~") used as record / row sources in forms & reports
'exclude queries that won't run e.g. ambiguous joins("#*)
If Left(strName, 1) <> "~" And Left(strName, 1) <> "#" Then
DoCmd.OpenQuery strName, acViewDesign
DoCmd.Close acQuery, strName, acSaveYes
End If
Next qdf
For Each obj In Application.CurrentProject.AllForms
strName = obj.Name
'exclude deleted forms (~TMPCLP*)
If Left(strName, 7) <> "~TMPCLP" Then
DoCmd.OpenForm strName, acDesign, , , , acHidden
DoCmd.Close acForm, strName, acSaveYes
End If
Next obj
For Each obj In Application.CurrentProject.AllReports
strName = obj.Name
'exclude deleted reports (~TMPCLP*)
If Left(strName, 7) <> "~TMPCLP" Then
DoCmd.OpenReport strName, acDesign, , , , acHidden
DoCmd.Close acReport, strName, acSaveYes
End If
Next obj
sngEnd = Timer
Application.Echo True
MsgBox "NAC Propagation Completed" & vbCrLf & vbCrLf & _
"Time taken = " & Round(sngEnd - sngStart, 3) & " s", vbInformation, "All done!"
Exit_Handler:
Exit Sub
Err_Handler:
' If Err = 7874 Then Resume Next
If Err = 3296 Then Resume Next 'JOIN expression not supported in query with ambiguous joins
Debug.Print "Error " & Err & " " & Err.Description & " in object " & strName
Resume Exit_Handler
End Sub