والتر نیاز دارد که همیشه یک کتاب کار خاص اکسل را در همان مکان روی صفحه و با اندازه پنجره خاص باز کند. او نمیپرسد آیا راهی وجود دارد که اکسل این اطلاعات مکان و اندازه را پس از بستن کتاب کار به خاطر بسپارد تا زمانی که همان کتاب کار بعدی باز میشود از آن استفاده شود.
یک راه حل نسبتا ساده این است که کتاب کار خود (یا اغلب کتاب های کار) را همانطور که می خواهید روی صفحه قرار دهید و سپس کتاب های کاری را به عنوان یک فضای کاری ذخیره کنید. این کار را با نمایش تب View از نوار و کلیک کردن بر روی ابزار Save Workspace انجام می دهید. البته باید توجه داشت که این رویکرد فقط در اکسل 2007 و اکسل 2010 کار میکند—امکان ایجاد فضاهای کاری از اکسل 2013 حذف شد، اگرچه هنوز میتوانید آنها را باز کنید.
برای راه حلی که در تمام نسخه های مدرن اکسل کار می کند، باید از یک ماکرو استفاده کنید. میتوانید یک ماکرو راهاندازی کنید که وقتی کتاب کار را میبندید بهطور خودکار اجرا میشود و زمانی که آن را باز میکنید، دیگری اجرا میشود. موردی که هنگام بسته شدن اجرا میشود میتواند اطلاعات موقعیتیابی را ذخیره کند، و سپس موردی که هنگام باز کردن اجرا میشود، میتواند آن اطلاعات را بازیابی کند و از آن برای تعیین محل نمایش کتاب کار استفاده کند.
اما سوال اینجاست که اطلاعات موقعیت یابی را کجا ذخیره کنیم. یک راه حل این است که به سادگی آن را در یک فایل متنی در همان پوشه ای که کتاب کار در آن ذخیره می شود، بنویسید. این رویکردی است که در جفت ماکرو زیر اتخاذ شده است.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim fileName As String
Dim myWindow As Window
Set myWindow = ActiveWindow
fileName = "config.txt"
Open fileName For Output As #1
With myWindow
Write #1, .Top
Write #1, .Left
Write #1, .Height
Write #1, .Width
End With
Close #1
End Sub
Private Sub Workbook_Open()
Dim inputStr As String
Dim fileName As String
Dim myWindow As Window
Set myWindow = ActiveWindow
fileName = "config.txt"
If Dir(fileName) <> "" Then
Open fileName For Input As #1
With myWindow
.WindowState = xlNormal
Line Input #1, inputStr
.Top = inputStr
Line Input #1, inputStr
.Left = inputStr
Line Input #1, inputStr
.Height = inputStr
Line Input #1, inputStr
.Width = inputStr
End With
Close #1
End If
End Sub
ماکرویی که هنگام بسته شدن کتاب کار اجرا می شود، چهار مکان موقعیت یابی (بالا، .چپ، ارتفاع و .عرض) را در فایلی به نام config.txt ذخیره می کند. سپس زمانی که کتاب کار باز می شود و ویژگی های مناسب برای پنجره کتاب کار تنظیم می شود، این فایل خوانده می شود. اگر فایل config.txt به دلایلی از دست رفته باشد، کتاب کار در محل پیش فرض خود باز می شود.
اگر یک کتاب کار در پوشه ای داشته باشید که از اطلاعات موقعیت یابی استفاده می کند، این رویکرد عالی عمل می کند. اگر چندین مورد دارید، هرکدام فایل config.txt را بازنویسی میکنند و احتمالاً در نهایت کار شما در جایی که میخواهید باز نمیشود.
برای برخی از افراد، یک رویکرد بهتر ممکن است ذخیره مکانهای موقعیتیابی در خود کتاب کار، در منابع نامگذاری شده باشد. این رویکردی است که در ماکروهای زیر اتخاذ شده است.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
With ThisWorkbook
With .Names
.Add Name:="WinTop", RefersToR1C1:="=1"
.Add Name:="WinLeft", RefersToR1C1:="=1"
.Add Name:="WinWidth", RefersToR1C1:="=1"
.Add Name:="WinHeight", RefersToR1C1:="=1"
End With
On Error GoTo 0
.Names("WinTop").RefersTo = ActiveWindow.Top
.Names("WinLeft").RefersTo = ActiveWindow.Left
.Names("WinWidth").RefersTo = ActiveWindow.Width
.Names("WinHeight").RefersTo = ActiveWindow.Height
End With
End Sub
Private Sub Workbook_Open()
With ThisWorkbook
ActiveWindow.Top = Val(Mid(.Names("WinTop").RefersTo, 2))
ActiveWindow.Left = Val(Mid(.Names("WinLeft").RefersTo, 2))
ActiveWindow.Width = Val(Mid(.Names("WinWidth").RefersTo, 2))
ActiveWindow.Height = Val(Mid(.Names("WinHeight").RefersTo, 2))
End With
End Sub
با این رویکرد می توانید به راحتی کتاب کار را به هر جایی که می خواهید منتقل کنید و ماکروها از ذخیره و استفاده مجدد از اطلاعات موقعیت یابی برای پنجره کتاب کار مراقبت می کنند.