Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

XL2000: For Each Loop to Determine If an Excel Workbook Is Open


View products that this article applies to.

This article was previously published under Q213299

↑ Back to the top


Summary

Microsoft Excel does not include a Microsoft Visual Basic for Applications function to determine whether a workbook is already open. The following sample user-defined function loops through all of the opened workbooks in memory to determine whether a specific workbook is already open in the current instance of Excel.

↑ Back to the top


More information

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs.
If you have limited programming experience, you may want to contact a Microsoft Certified Partner or Microsoft Advisory Services. For more information, visit these Microsoft Web sites:

Microsoft Certified Partners - https://partner.microsoft.com/global/30000104

Microsoft Advisory Services - http://support.microsoft.com/gp/advisoryservice

For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS To create the user-defined function IsOpen, follow these steps:
  1. Start Microsoft Excel.
  2. Press ALT+F11 to start the Visual Basic editor.
  3. On the Insert menu, click Module.
  4. In the module sheet, type the following code:
    Function IsOpen(FileName As String) As Boolean
        Dim wb As Workbook
        For Each wb In Application.Workbooks
            If UCase(wb.Name) = UCase(FileName) Then
                IsOpen = True
                Exit Function
            End If
        Next wb
        IsOpen = False
    End Function
    						
The following sample Visual Basic sub procedure calls the user-defined IsOpen function. The IsOpen function returns a True if Book1.xls is already open in the current instance of Microsoft Excel; otherwise, IsOpen returns False.

You can use the following code to test for any Excel Workbook by replacing the workbook name "Book1.xls" with the workbook you want.

To create a sub procedure to test for an open Excel workbook, follow these steps:
  1. Start Microsoft Excel.
  2. Press ALT+F11 to start the Visual Basic editor.
  3. On the Insert menu, click Module.
  4. In the module sheet, type the following code:
    Sub Test()
        If IsOpen("Book1.xls") Then
           MsgBox "The file is open."
        Else
           MsgBox "The file is not open."
        End If
    End Sub
    					

↑ Back to the top


Keywords: KB213299, kbprogramming, kbhowto, kbdtacode

↑ Back to the top

Article Info
Article ID : 213299
Revision : 8
Created on : 11/23/2006
Published on : 11/23/2006
Exists online : False
Views : 231