Yeah, I know.
When you close an application the code tidies up after itself and goes round destroying any objects left open to free up memory.
You are creating an Access object in your code to open a second copy of your database, but when you quit the readonly copy the second copy is destroyed along with it.
Example...
test2.accdb is opened using SET and closes after DoCmd.Quit
test3.accdb is opened using SHELL and remains open after DoCmd.Quit
Private Sub test()
Const aDocPath2 As String = "C:\test2.accdb"
Const aDocPath3 As String = "C:\test3.accdb"
'uses SET to create instance of access
Dim accdb
Set accdb = CreateObject("Access.Application")
accdb.OpenCurrentDatabase aDocPath2
accdb.Visible = True
'uses SHELL ...
Shell """" & GetEXE(aDocPath3) & """ """ & aDocPath3 & """", vbMaximizedFocus
DoCmd.Quit
'aDocPath2 is closed
'aDocPath3 remains open
End Sub
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private Function GetEXE(sfile As String) As String
Dim i As Integer, s2 As String
If sfile = "" Then Exit Function
If Dir(sfile) = "" Then Exit Function
s2 = String(260, 32)
i = FindExecutable(sfile, vbNullString, s2)
If i > 32 Then GetEXE = Left$(s2, InStr(s2, Chr$(0)) - 1)
End Function