Ghi nhớ Vị trí và Kích thước Sổ làm việc (Microsoft Excel)
Walter có nhu cầu luôn mở một sổ làm việc Excel cụ thể ở cùng một vị trí trên màn hình và với một kích thước cửa sổ cụ thể. Anh ấy tự hỏi liệu có cách nào để Excel nhớ thông tin vị trí và kích thước này khi đóng sổ làm việc để nó được sử dụng khi cùng một sổ làm việc đó được mở tiếp theo hay không.
Một giải pháp tương đối đơn giản là đặt sổ làm việc của bạn (hoặc thường là, sổ làm việc) như bạn muốn trên màn hình và sau đó lưu sổ làm việc dưới dạng không gian làm việc. Bạn thực hiện việc này bằng cách hiển thị tab Chế độ xem của dải băng và nhấp vào công cụ Lưu không gian làm việc. Tuy nhiên, cần lưu ý rằng phương pháp này chỉ hoạt động trong Excel 2007 và Excel 2010 — khả năng tạo không gian làm việc đã bị loại bỏ khỏi Excel 2013, mặc dù bạn vẫn có thể mở chúng.
Để có giải pháp hoạt động trên tất cả các phiên bản Excel hiện đại, bạn sẽ cần sử dụng macro. Bạn có thể thiết lập một macro tự động chạy khi bạn đóng sổ làm việc và một macro khác chạy khi bạn mở nó. Cái chạy khi bạn đóng có thể lưu thông tin định vị, sau đó cái chạy khi bạn mở có thể truy xuất thông tin đó và sử dụng nó để xác định vị trí nơi sổ làm việc sẽ được hiển thị.
Tuy nhiên, câu hỏi đặt ra là lưu thông tin định vị ở đâu. Một giải pháp là chỉ cần ghi nó ra một tệp văn bản trong cùng một thư mục nơi sổ làm việc được lưu trữ. Đó là cách tiếp cận được thực hiện trong cặp macro sau.
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
Macro chạy khi đóng sổ làm việc sẽ lưu bốn vị trí định vị (.Top, .Left, .Height và .Width) vào một tệp được gọi là config.txt. Sau đó, tệp này được đọc khi sổ làm việc được mở tiếp theo và các thuộc tính thích hợp cho cửa sổ sổ làm việc được đặt.
Nếu tệp config.txt bị thiếu vì lý do nào đó, thì sổ làm việc sẽ mở ở vị trí mặc định của nó.
Cách tiếp cận này hoạt động hiệu quả nếu bạn có một sổ làm việc trong thư mục sử dụng thông tin định vị. Nếu bạn có nhiều cái, mỗi cái sẽ ghi đè lên tệp config.txt và bạn có khả năng sẽ không mở được sổ làm việc ở nơi bạn muốn.
Đối với một số người, cách tiếp cận tốt hơn có thể là lưu trữ các vị trí định vị trong chính sổ làm việc, trong các tham chiếu được đặt tên. Đó là cách tiếp cận được thực hiện trong các macro sau.
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
Với cách tiếp cận này, bạn có thể dễ dàng chuyển sổ làm việc đến bất cứ nơi nào bạn muốn và các macro sẽ lưu và sử dụng lại thông tin định vị cho cửa sổ sổ làm việc.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (10091) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.