Предположим, что нужно записать макрос, открывающий часто используемые книги при запуске Excel. Для этого можно создать макрос Auto_Open. Можно также запускать макрос автоматически при открытии книги.
Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Если ее нет, выполните указанные ниже действия.
-
Откройте вкладку Файл и выберите пункт Параметры, а затем — категорию Настроить ленту.
-
В разделе Настройка ленты в поле Основные вкладки установите флажок Разработчик.
-
Нажмите кнопку ОК.
Чтобы при запуске Excel автоматически открывались книги, выполните указанные ниже действия.
-
Откройте вкладку Разработчик и нажмите кнопку Запись макроса.
-
В поле Имя макроса введите Auto_Open.
-
В списке Сохранить в выберите пункт Личная книга макросов.
-
После этого макрос будет доступен при каждом открытии Excel.
-
Чтобы было проще вспомнить, что делает макрос, введите его описание в поле Описание. Можно также оставить это поле пустым.
-
Нажмите кнопку ОК.
-
Откройте вкладку Файл, выберите пункт Открыть и выберите файлы, с которыми работаете каждый день. Они могут находиться в разных местах. Чтобы выбрать несколько файлов в одной папке, щелкните каждый из них, удерживая нажатой клавишу SHIFT.
-
Откройте вкладку Разработчик и нажмите кнопку Остановить запись.
-
При закрытии Excel в конечном итоге будет предложено сохранить изменения в личной книге макросов. Нажмите кнопку «Да», чтобы макрос запускался при каждом запуске Excel.
Каждый раз при запуске Excel автоматически будут открываться книги, включенные в макрос.
Нужна дополнительная помощь?
Skip to content
На чтение 2 мин. Просмотров 5.2k.
Что делает макрос: Этот макрос открывает диалоговое окно, в котором отображаются только excel-файлы, тем самым позволяет открыть конкретную книгу
Содержание
- Как макрос работает
- Код макроса
- Как работает этот код
- Как использовать
Как макрос работает
Данный макрос открывает диалоговое окно, как показано на рис, что позволяет пользователю просматривать и открывать файл Excel.
Код макроса
Sub Macro7() 'Шаг 1: Определяем переменную. Dim FName As Variant 'Шаг 2: Метод GetOpenFilename активизирует диалоговое окно. FName = Application.GetOpenFilename( _ 'a – определяем тип файла FileFilter:="Excel Workbooks,*.xl*", _ 'b – заголовок окна Title:="Выбери файл, который надо открыть", _ 'c – множественный выбор MultiSelect:=False) 'Шаг 3: Если был выбран файл, открыть его! If FName <> False Then Workbooks.Open Filename:=FName End If End Sub
Как работает этот код
- Первое, что делаем — объявляем переменную типа Variant, будет содержать Имя файла, который пользователь выберет. FName — имя нашей переменной.
- На шаге 2 мы используем метод GetOpenFilename, чтобы вызвать диалоговое окно, которое позволяет просмотреть содержимое папки и выбрать нужный нам файл. Метод
GetOpenFilename поддерживает несколько настраиваемых параметров:
a. FileFilter параметр позволяет указать Тип файла, который мы ищем.
b. Title позволяет изменить заголовок, который отображается в верхней части диалогового окна.
c. MultiSelect — параметр множественный выбор позволяет ограничить выбор в один файл. - Если пользователь выбирает файл из диалогового окна, переменная FName берёт Имя файла, который выбрали. Если переменная не пустая, мы используем метод Open из книг
объекта, чтобы открыть файл.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
- По желанию, можно назначить макрос к кнопке, чтобы открыть файл.
Открытие книги Excel из кода VBA. Проверка существования книги. Создание новой книги, обращение к открытой книге и ее закрытие. Методы Open, Add и Close.
Открытие существующей книги
Существующая книга открывается из кода VBA Excel с помощью метода Open:
Workbooks.Open Filename:=«D:test1.xls» |
или
Workbooks.Open («D:test1.xls») |
В кавычках указывается полный путь к открываемому файлу Excel. Если такой файл не существует, произойдет ошибка.
Проверка существования файла
Проверить существование файла можно с помощью функции Dir. Проверка существования книги Excel:
If Dir(«D:test1.xls») = «» Then MsgBox «Файл не существует» Else MsgBox «Файл существует» End If |
Или, если файл (книга Excel) существует, можно сразу его открыть:
If Dir(«D:test1.xls») = «» Then MsgBox «Файл не существует» Else Workbooks.Open Filename:=«D:test1.xls» End If |
Создание новой книги
Новая рабочая книга Excel создается в VBA с помощью метода Add:
Созданную книгу, если она не будет использоваться как временная, лучше сразу сохранить:
Workbooks.Add ActiveWorkbook.SaveAs Filename:=«D:test2.xls» |
В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».
Обращение к открытой книге
Обращение к активной книге:
Обращение к книге с выполняемым кодом:
Обращение к книге по имени:
Workbooks(«test1.xls») Workbooks(«test2.xls») |
Обратиться по имени можно только к уже открытой книге, а чтобы из кода VBA Excel книгу открыть, необходимо указать полный путь к файлу.
Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:
Workbooks(«test1.xlsx»).Close |
Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:
Workbooks(«test1.xlsx»).Close SaveChanges:=False |
или
Workbooks(«test1.xlsx»).Close (False) |
Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:
Workbooks(«test1.xlsx»).Close SaveChanges:=True |
или
Workbooks(«test1.xlsx»).Close (True) |
Фразы для контекстного поиска: открыть книгу, открытие книги, создать книгу, создание книги, закрыть книгу, закрытие книги, открыть файл Excel, открытие файла Excel, существование книги, обратиться к открытой книге.
How do I activate my Other workbook from the Current workbook? I have a current workbook with dumb.xls and The other workbook name as Tire.xls.I have opened the Tire.xls from the dumb.xls using worksbooks.open filename:= "name of the file"
.Its getting open but The problem is Im unable to make it work.
If I say cells(2,24).value=24
puts these value in the cell of dumb.xls but I want it to be done one Tire.xls.
activesheet.cells(2,24).value=24
puts these on Tire.xls. But how do i activate the Workbook with the name ? I need to open 3 to 4 excel workbooks And perform the operation? How do I activate the specific workbook
I have found this code on google
activeworkbook.worksheet("sheetname").activate ' but not working
windows("sheetname").activate ' people on google suggested not to use
Its not getting activated. I dont know how to make it work. Can anyone tell me How do i activate a specific workbook and a specific sheet of the other workbook ?
Example: I have niko.xls and niko_2.xls opened as workbooks from the dumb.xls workbook so totally 3 workbooks and I have to activate the 2nd sheet of niko_2.xls workbook.How do I make it? Can anyone explain me the syntax with these example? Thank you in advance
Здравствуйте! Помогите, пожалуйста!
Кнопка, которой присваивается макрос, находится на листе «Стартовая». На листе «Поиск» в ячейке G1 указано название другой книги. В H1 — название листа этой книги. Как создать макрос, который открывал бы книгу с названием из ячейки G1 и лист в этой книге с названием из ячейки H1?
Огромное спасибо!
как то так
Sub Макрос2()
Set A = [H1]
Workbooks.Open "C:Documents and SettingsMasterМои документы" & [G1] & ".xls"
Sheets(A.Value).Activate
End Sub
до тачивайте под себя.
Макрос подделал под себя. Так как кнопка будет находиться на другом листе, в третью строку добавил Sheets(«Поиск»)., чтобы название книги бралось именно с листа «Поиск». Но теперь при выполнении макроса не работает строка Sheets(A.Value).Activate. В чем моя проблема?
Sub Макрос2()
Set A = [H1]
Workbooks.Open «C:Documents and SettingsMasterМои документы» & Sheets(«Поиск»).[G1] & «.xlsm»
Sheets(A.Value).Activate
End Sub
Разобрался. В итоге:
Sub Макрос2()
Set A = Sheets(«Поиск»).[H1]
Workbooks.Open «C:Documents and SettingsMasterМои документы» & Sheets(«Поиск»).[G1] & «.xls»
Sheets(A.Value).Activate
End Sub
Большое спасибо за помощь!
lovko, оформляйте код тегами.
Я, как всегда, чертовски адекватен… Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771
И снова проблема.
И в ячейке G1, и в ячейке H1 — формула, которая дает то или иное название книги и листа. Макрос, видимо, видит саму формулу, а не ее значение в виде названия книги и названия листа, поэтому работать не хочет. Можно ли сделать так, чтобы макрос видел не формулу, а ее содержание?
Помогите!!!
Цитировать«C:Documents and SettingsMasterМои документы»
у вас точно такой путь к файлу?
файл прикладываем.
макрос нормально отрабатывает. Ошибка может быть если листа с таким именем нет.
Sub Поиск1()
Set A = Sheets("Поиск").[H1]
Set B = Sheets("Поиск").[G1]
On Error GoTo S
Workbooks.Open "C:Инструкции" & B.Value & ".xlsm"
On Error GoTo S1
Sheets(A.Value).Activate
Exit Sub
S:
MsgBox "По пути C:Инструкции отсутствует книга " & B.Value
Exit Sub
S1:
MsgBox "В книге " & B.Value & ".xlsm лист с именем " & A.Value & " отсутствует."
End Sub
Все отлично работает. Большое спасибо!