Laurence Martin
asked on
Opening an Access from from VBA
I have some code that is run in Excel that opens an Access database.
It has been working well but I now want it to open a different database.
It works fine if the database is not open to start with, but if the database is open I get the error that
"the open form command is not available now".
Here is the code, I am running it in test mode so boTest is TRUE:
Sub OpenDatabaseForm()
Dim OrderDB As Database
Dim stForm As String
Dim intDbVersion As Integer
Dim accObj As Object
stErrorTitle = "Open Database Form"
If boTest Then
Set accObj = CreateObject("access.appli cation")
Set FSO = CreateObject("Scripting.Fi leSystemOb ject")
If FSO.FileExists(Environ("Us erprofile" ) & "\Desktop\TestOrderBookSQL FE.laccdb" ) Then
AppActivate ("Microsoft Access - TestOrderBookSQLFE")
If Not accObj Is Nothing Then
With accObj
.docmd.openform "frm_orders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.docmd.openform "frmProcessOrders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.UserControl = True
End With
End If
Else
accObj.OpenCurrentDatabase Environ("UserProfile") & "\Desktop\TestOrderBookSQL FE.accdb"
End If
Else
Set accObj = CreateObject("access.appli cation")
Set FSO = CreateObject("Scripting.Fi leSystemOb ject")
If FSO.FileExists(Environ("Us erprofile" ) & "\Desktop\TestOrderBookSQL FE.laccdb" ) Then
AppActivate ("Microsoft Access - TestOrderBookSQLFE")
If Not accObj Is Nothing Then
With accObj
.docmd.openform "frm_orders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.docmd.openform "frmProcessOrders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.UserControl = True
End With
End If
Else
Set accObj = CreateObject("access.appli cation")
accObj.OpenCurrentDatabase Environ("UserProfile") & "\Desktop\TestOrderBookSQL FE.accdb"
End If
End If
With accObj
.docmd.openform "frm_Orders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.docmd.openform "frmProcessOrders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.UserControl = True
End With
End Sub
Why won't the form open. Could there be something in frm_orders prevent automatic opening like this? it does have procedures in the On Current and On Load events.
Thanks
LJM
It has been working well but I now want it to open a different database.
It works fine if the database is not open to start with, but if the database is open I get the error that
"the open form command is not available now".
Here is the code, I am running it in test mode so boTest is TRUE:
Sub OpenDatabaseForm()
Dim OrderDB As Database
Dim stForm As String
Dim intDbVersion As Integer
Dim accObj As Object
stErrorTitle = "Open Database Form"
If boTest Then
Set accObj = CreateObject("access.appli
Set FSO = CreateObject("Scripting.Fi
If FSO.FileExists(Environ("Us
AppActivate ("Microsoft Access - TestOrderBookSQLFE")
If Not accObj Is Nothing Then
With accObj
.docmd.openform "frm_orders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.docmd.openform "frmProcessOrders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.UserControl = True
End With
End If
Else
accObj.OpenCurrentDatabase
End If
Else
Set accObj = CreateObject("access.appli
Set FSO = CreateObject("Scripting.Fi
If FSO.FileExists(Environ("Us
AppActivate ("Microsoft Access - TestOrderBookSQLFE")
If Not accObj Is Nothing Then
With accObj
.docmd.openform "frm_orders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.docmd.openform "frmProcessOrders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.UserControl = True
End With
End If
Else
Set accObj = CreateObject("access.appli
accObj.OpenCurrentDatabase
End If
End If
With accObj
.docmd.openform "frm_Orders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.docmd.openform "frmProcessOrders", , , "[f1cSCOrder]= '" & stSCOrd & "'"
.UserControl = True
End With
End Sub
Why won't the form open. Could there be something in frm_orders prevent automatic opening like this? it does have procedures in the On Current and On Load events.
Thanks
LJM
I'd think when Access has it opened it may lock the file and you can't VBA to a locked file.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
What exactly are you trying to do? Opening a form via automation doesn't make any sense. And opening a database that other people are using should never be done. Remember, every user should have his own personal copy of the FE. And if it turns out that you actually do need to automate the application, you should use a copy that is not being used by others. They should never be shared. Forms are intended to be interactive. You don't use them in a batch process. Are you trying to run some code from the form's class module or perhaps a query?
ASKER
Hi Pat,
Yes, every user does have their own copy of the front-end and that's what I'm trying to open (hence the path to the file being the user's desktop).
The code imports data from Excel into the SQL back-end and then I want to open the form in order to show the imported data.
There is no process required in the form, I just want to open it and show the imported record.
Yes, every user does have their own copy of the front-end and that's what I'm trying to open (hence the path to the file being the user's desktop).
The code imports data from Excel into the SQL back-end and then I want to open the form in order to show the imported data.
There is no process required in the form, I just want to open it and show the imported record.
Wouldn't it be simpler to automate this from Access? Then you don't need to open Excel at all. Just have Access link to the spreadsheet and run an append query to append the data to the linked SQL server table. This would probably be more convenient for the user also.
ASKER
Nope,
The data is sent in via email and the user needs to open it to check before importing it to the database. Which they do without having to save it first.
The data is sent in via email and the user needs to open it to check before importing it to the database. Which they do without having to save it first.
ASKER
Thanks Capricorn