Dan Waters
dwaters at usinternet.com
Tue Sep 18 07:58:01 CDT 2007
I recently worked on an Access to Excel procedure, and there are three things I can see that might help. First, you will want to know if your user currently has Excel already open: '-- Is Excel already running? If IsAppRunning("Excel") = True Then Set objExcel = GetObject(, "Excel.Application") blnXLRunning = True Else Set objExcel = CreateObject("Excel.Application") blnXLRunning = False End If I used late binding because I don't know which version of Excel a user might have. Also, the procedure IsAppRunning is from Leban's web site. Next, you need to specifically save & close the workbook and instance of Excel if your code opened a new one. '-- Save & Quit objWorkbook.Save objWorkbook.Close If blnXLRunning = False Then objExcel.Quit End If Set objWorkbook = Nothing Set objExcel = Nothing Then, open the excel spreadsheet using ShellExecute: ShellExecute 0, "Open", stgFullPath, vbNullString, CurDir$, vbMaximizedFocus I am NOT experienced with running Excel in Access, but perhaps this will help. Dan -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of ewaldt at gdls.com Sent: Tuesday, September 18, 2007 7:03 AM To: accessd at databaseadvisors.com Subject: [AccessD] More Access to Excel Help Needed I'm thrilled at how well a database I'm working is doing (thanks in part to people here) except for one area: Excel doesn't want to go leave when it's told to. My database opens Excel, creates a workbook, exports data from several runs of a query (each to its own worksheet,), copies a code module from Access to Excel (it's actually Excel code just being stored in Access for this purpose), and then tells Excel to run that code. One of two things happens: 1. It runs perfectly, but Excel does not completely shut down (i.e., it still shows in the Task Manager) when closed. 2. It does NOT run completely, but gives error #462: "The remote server machine does not exist or is unavailable." In this case, the Excel workbook has been created, the data have been exported, but it's unable to transfer the code module. Now, I've also noticed that my Personal Macro Workbook is not present in either case. I don't know if this is normal in this situation or not; just thought I'd mention it in case it offers a hint to one of you knowledgeable individuals. In case #2, BTW, it dies at the "Set NewModule" statement in CopyModule. Any help with these would be greatly appreciated as always. Thomas F. Ewald Stryker Mass Properties General Dynamics Land Systems '----Code Follows---- Public Sub CreateExcelWB() Dim varChoice As Variant Dim intToggle As Integer Dim rst As ADODB.Recordset Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim intCount As Integer intToggle = 0 On Error GoTo HandleErr Set xlApp = New Excel.Application 'Launch Excel Set xlBook = xlApp.Workbooks.Add 'Create workbook Set rst = New ADODB.Recordset For Each varChoice In Forms![frmexportcriteria].[lboVariants].ItemsSelected Forms![frmexportcriteria]![txtVariant] = _ Forms![frmexportcriteria].[lboVariants].ItemData(varChoice) DoCmd.SetWarnings False DoCmd.OpenQuery "qryGen" DoCmd.SetWarnings True xlBook.Sheets.Add Set xlSheet = xlBook.ActiveSheet xlSheet.Name = _ "Data_" & Forms![frmexportcriteria]![lboVariants].ItemData(varChoice) rst.Open _ Source:="tbl02", _ ActiveConnection:=CurrentProject.Connection With xlSheet For intCount = 1 To 3 With .Cells(1, intCount) .Value = rst.Fields(intCount - 1).Name .Font.Bold = True End With Next intCount .Range("A2").CopyFromRecordset rst End With rst.Close Next CopyModule (xlBook.Name) xlBook.Application.Run "RunImpacts" xlApp.Visible = True ExitHere: On Error Resume Next rst.Close Set rst = Nothing Set xlSheet = Nothing Set xlApp = Nothing Set xlBook = Nothing Exit Sub HandleErr: MsgBox ERR & ": " & ERR.Description, , "Error" xlApp.Visible = True Resume ExitHere End Sub '--------------------------------------------------- Sub CopyModule(strXL As String) 'Copy CR_Impacts module to Excel workbook Dim CodeLines As String Dim ModuleTocopy As vbcomponent, NewModule As vbcomponent Set ModuleTocopy = _ Application.VBE.ActiveVBProject.VBComponents("CR_Impacts") Set NewModule = _ Workbooks(strXL).VBProject.VBComponents.Add(vbext_ct_StdModule) CodeLines = ModuleTocopy.CodeModule.Lines _ (1, ModuleTocopy.CodeModule.CountOfLines) NewModule.CodeModule.AddFromString CodeLines NewModule.Name = ModuleTocopy.Name End Sub This is an e-mail from General Dynamics Land Systems. It is for the intended recipient only and may contain confidential and privileged information. No one else may read, print, store, copy, forward or act in reliance on it or its attachments. If you are not the intended recipient, please return this message to the sender and delete the message and any attachments from your computer. Your cooperation is appreciated. -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com