I am opening Microsoft Access from Excel VBA and running a macro, and then running more code in Excel. Everything worked fine a number of days ago, but now I'm having two problems. First Access doesn't close after running the macro, so Excel times out (It gets a message box that pops up and says Microsoft Excel is waiting for another application to complete an OLE action). That is actually the other problem, because when it times out I have to interact with Excel again to make the macro in Excel continue running. I'm trying to not have to touch anything after I first start my macro in Excel until it is done. And I think it might also be timing out because I added more steps onto my macro in Access so it takes longer...
First, here is the Excel code that calls Access:
Sub Opendatabase()
Dim accessApp
Set accessApp = CreateObject("Access.Application")
accessApp.Visible = True
accessApp.OpenCurrentDataBase ("I:\MyPath\MyFile.accdb")
accessApp.Run "ImportDataRunQueriesExportData"
'Run the next part of Excel macro
Application.Run "PullinTheExportedAccessData"
End Sub
And then in Access, it does this (sorry it is so long). The purpose it to pull in data, run queries (Which I do by opening and closing them, I'm not sure if there is a faster way) and then exporting data. I want it to close at the end, too, and right now that part doesn't work.
Sub ImportDataRunQueriesExportData()
DoCmd.RunSavedImportExport "Import-ERT Aggregate Macro"
'Open master book January to refresh
DoCmd.SetWarnings False
DoCmd.OpenQuery ("Remove HP not Area8")
DoCmd.OpenQuery ("Remove Non Area 8 HP")
DoCmd.SetWarnings True
DoCmd.OpenTable ("Remove HPnonArea8")
DoCmd.Close acTable, "Remove HPnonArea8"
DoCmd.OpenQuery ("Summary For January")
'Open Duplicate search queries across all c
DoCmd.OpenQuery ("S+D")
DoCmd.OpenQuery ("S+D+L")
DoCmd.OpenQuery ("S+D+L+F")
DoCmd.OpenQuery ("S+D+L+F+M")
'Open Duplicate search queries within c
DoCmd.OpenQuery ("C+S+D")
DoCmd.OpenQuery ("C+S+D+L")
DoCmd.OpenQuery ("C+S+D+L+F")
DoCmd.OpenQuery ("C+S+D+L+F+M")
'Save and close queries, made with create Macro function
DoCmd.Close acQuery, "Summary For January"
DoCmd.Close acQuery, "S+D"
DoCmd.Close acQuery, "S+D+L"
DoCmd.Close acQuery, "S+D+L+F"
DoCmd.Close acQuery, "S+D+L+F+M"
DoCmd.Close acQuery, "C+S+D"
DoCmd.Close acQuery, "C+S+D+L"
DoCmd.Close acQuery, "C+S+D+L+F"
DoCmd.Close acQuery, "C+S+D+L+F+M"
'Open Summary Queries
DoCmd.OpenQuery ("New January")
DoCmd.OpenQuery ("Renew January")
DoCmd.OpenQuery ("Count October")
DoCmd.OpenQuery ("Count November")
DoCmd.OpenQuery ("Count December")
DoCmd.OpenQuery ("5B")
DoCmd.OpenQuery ("5CW")
DoCmd.OpenQuery ("5ML")
DoCmd.OpenQuery ("5M")
DoCmd.OpenQuery ("5S")
DoCmd.OpenQuery ("RA")
'Save and close queries and table
DoCmd.Close acQuery, "New January"
DoCmd.Close acQuery, "Renew January"
DoCmd.Close acQuery, "Count October"
DoCmd.Close acQuery, "Count November"
DoCmd.Close acQuery, "Count December"
DoCmd.Close acQuery, "5B"
DoCmd.Close acQuery, "5CW"
DoCmd.Close acQuery, "5ML"
DoCmd.Close acQuery, "5M"
DoCmd.Close acQuery, "5S"
DoCmd.Close acQuery, "RA"
'Make Table, delete w/in c dups, Open Data Table S D Between C, close table
DoCmd.SetWarnings False
DoCmd.OpenQuery ("Table S+D")
DoCmd.OpenQuery ("Delete C+S+D")
DoCmd.SetWarnings True
DoCmd.OpenTable ("S D Between C")
DoCmd.Close acTable, "S D B C"
'Run saved exports of the queries to folder
DoCmd.RunSavedImportExport "Export-S+D"
DoCmd.RunSavedImportExport "Export-S+D+L"
DoCmd.RunSavedImportExport "Export-S+D+L+F"
DoCmd.RunSavedImportExport "Export-S+D+L+F+M"
DoCmd.RunSavedImportExport "Export-C+S+D"
DoCmd.RunSavedImportExport "Export-C+S+D+L"
DoCmd.RunSavedImportExport "Export-C+S+D+L+F"
DoCmd.RunSavedImportExport "Export-C+S+D+L+F+M"
DoCmd.RunSavedImportExport "Export-New January"
DoCmd.RunSavedImportExport "Export-Renew January"
DoCmd.RunSavedImportExport "Export-Count October"
DoCmd.RunSavedImportExport "Export-Count November"
DoCmd.RunSavedImportExport "Export-Count December"
DoCmd.RunSavedImportExport "Export-5B"
DoCmd.RunSavedImportExport "Export-5CW"
DoCmd.RunSavedImportExport "Export-5ML"
DoCmd.RunSavedImportExport "Export-5M"
DoCmd.RunSavedImportExport "Export-5S"
DoCmd.RunSavedImportExport "Export-S D Between C"
DoCmd.RunSavedImportExport "Export-RA"
Dim n As Integer
Dim db As DAO.Database
Set db = CurrentDb
For n = db.TableDefs.Count - 1 To 0 Step -1
' loop through all tables
If InStr(1, db.TableDefs(n).Name, "ImportError") > 0 Then
' if table is import errors table
DoCmd.DeleteObject acTable, db.TableDefs(n).Name
' delete table
End If
Next n
Application.SetOption "Auto compact", True
End Sub
Any help would be greatly appreciated. Thank you.
accessApp.Application.QuitafterApplication.RunSet accessApp = Nothingtoo.With DoCmd ... End Withinstead of callingDoCmdon each line.With DoCmd ... End With?