OLE Automation: GetObject Function with Filename Opens FileID: Q108074
|
In a Microsoft Visual Basic application, if you use the GetObject function with a filename to activate a file in Microsoft Excel, you may receive the following error message in Microsoft Excel:
Book1.xls is already open. Reopening will cause your changes to be discarded. Do you want to reopen?
When you use the GetObject function with a filename to activate a workbook in Microsoft Excel, the file is opened, whether or not the file is already open. If the file is already open, and contains changes you have not saved, the above error message is returned.
To activate the workbook BOOK1.XLS as an object linking and embedding (OLE)
Automation object and avoid opening BOOK1.XLS if it is already open, do the
following:
'Dimension variable xl as object type
Dim xl As Object
'Activate Microsoft Excel and assign to variable xl
Set xl = GetObject(, "Excel.application.5")
'Set n to number of open workbooks
n = xl.Workbooks.Count
'Loop through each open workbook
For c = 1 To n
'Test to see if workbook is BOOK1.XLS
'If true, activate BOOK1.XLS and exit loop
'BOOK1.XLS in this line of code must be capitalized
If xl.Workbooks(c).Name = "BOOK1.XLS" Then
xl.Workbooks("BOOK1.XLS").Activate
Exit For
End If
Next c
You can use the Visual Basic GetObject function to access an OLE
automation object and assign the object to an object variable. You
can then use the object variable to reference the OLE automation
object in your Visual Basic code.
For more information about the GetObject Function or OLE Automation,
choose the Search button in Visual Basic Help and type:
OLE Automation
Additional query words:
Keywords : xlwin
Version : 5.00
Platform : WINDOWS
Issue type :
Last Reviewed: April 9, 1999