ماکروها اغلب برای برش، تاس کردن، و در غیر این صورت پردازش اطلاعات موجود در کتابهای کار استفاده میشوند. البته این فرض بر این است که کتاب کاری که حاوی اطلاعات است واقعاً باز است. اگر اینطور نیست، پس واضح است که ماکرو شما باید کدی را برای باز کردن کتاب کار مورد نیاز داشته باشد.
باز کردن یک کتاب کار واقعاً می تواند سرعت یک ماکرو را کاهش دهد. دسترسی به دیسک و بارگذاری فایل زمان می برد. بنابراین، اگر ماکرو شما میتواند بررسی کند که آیا یک کتاب کار باز است یا خیر، میتوانید سرعت ماکروهای خود را تا حد زیادی افزایش دهید اگر کتاب کار از قبل باز شده است.
یکی از راههای بسیار انعطافپذیر برای بررسی باز بودن یک کتاب کار، استفاده از تابعی است که بررسی را انجام میدهد و سپس به سادگی یک مقدار TRUE یا FALSE را بر اساس باز بودن کتاب کار برمیگرداند. ماکرو کوتاه زیر این کار مختصر را انجام می دهد:
Function AlreadyOpen(sFname As String) As Boolean
Dim wkb As Workbook
On Error Resume Next
Set wkb = Workbooks(sFname)
AlreadyOpen = Not wkb Is Nothing
Set wkb = Nothing
End Function
برای استفاده از تابع، کافی است نام کتاب کاری را که می خواهید بررسی کنید، به روش زیر ارسال کنید:
sFilename = "MyFileName.xls"
sPath = "C:MyFolderMySubFolder"
If AlreadyOpen(sFilename) Then
Do not have to open
Else
Workbooks.Open sPath & sFilename
End If