Запоминание положения и размера книги (Microsoft Excel)
Уолтеру необходимо всегда открывать определенную книгу Excel в одном и том же месте на экране и с определенным размером окна. Он задается вопросом, есть ли способ, чтобы Excel запомнил это местоположение и информацию о размере при закрытии книги, чтобы она использовалась при следующем открытии той же книги.
Одно относительно простое решение — расположить книгу (или, часто, книги) так, как вы хотите, на экране, а затем сохранить книги как рабочую область. Для этого нужно отобразить вкладку «Просмотр» на ленте и щелкнуть инструмент «Сохранить рабочую область». Однако следует отметить, что этот подход работает только в Excel 2007 и Excel 2010 — возможность создавать рабочие области была удалена из Excel 2013, хотя вы все еще можете их открывать.
Для решения, которое работает во всех современных версиях Excel, вам понадобится макрос. Вы можете настроить один макрос, который запускается автоматически при закрытии книги, а другой — при открытии. Тот, который запускается при закрытии, может сохранять информацию о местоположении, а тот, который запускается при открытии, может извлекать эту информацию и использовать ее, чтобы определить, где должна отображаться книга.
Однако вопрос в том, где сохранить информацию о местоположении. Одно из решений — просто записать его в текстовый файл в той же папке, где хранится книга. Это подход, используемый в следующей паре макросов.
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
Макрос, который запускается при закрытии книги, сохраняет четыре местоположения (.Top, .Left, .Height и .Width) в файл с именем 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
При таком подходе вы можете легко перенести книгу в любое место, а макросы позаботятся о сохранении и повторном использовании информации о местоположении для окна книги.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (10091) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.