I figured out what the problem was with the 2046 errors.
There are two towers (buildings) currently configured for the app, each with 4 floors. The two forms, frmNorthTower and frmSouthTower are a bit complex to say the least. They are more-or-less identical in how they are configured logically and populated from the underlying RecordSource, they are both "Single Form". As each instance of the form opens, the form's Load event SELECTs its floor occupant data based on either OpenArgs or in its absence the floor value found in the global variable "strCurFloor", you see that being set in each iteration of the loop. On somewhat of a hunch, I surmised that it might be a case where Access didn't detect that change as I stepped through each floor and deemed the form unavailable to process. So, as you see in the code, I opened the form hidden so it would go through its "normal" use, sent it to a pdf and then closed it. That's more or less how the UI works when the user goes from floor to floor in an interactive mode.
Code:
For I = 1 To 4
strCurFloor = CStr(100 + I)
strFloor = CStr(I)
strErrMsg = "create pdf South floor layouts: "
strPDFName = strHostFldr & "\FloorPDFs\South" & strFloor & ".pdf"
DoCmd.OpenForm "frmSouthTower", , , , , acHidden
DoCmd.OutputTo acOutputForm, "frmSouthTower", acFormatPDF, strPDFName
DoCmd.Close acForm, "frmSouthTower"
strErrMsg = "create pdf North floor layouts: "
strPDFName = strHostFldr & "\FloorPDFs\North" & strFloor & ".pdf"
DoCmd.OpenForm "frmNorthTower", , , , , acHidden
DoCmd.OutputTo acOutputForm, "frmNorthTower", acFormatPDF, strPDFName
DoCmd.Close acForm, "frmNorthTower"
Next I