Открываем книгу excel макросом

Открытие книги 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, существование книги, обратиться к открытой книге.


Skip to content

На чтение 2 мин. Просмотров 5.2k.

Что делает макрос: Этот макрос открывает диалоговое окно, в котором отображаются только excel-файлы, тем самым позволяет открыть конкретную книгу

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает этот код
  4. Как использовать

Как макрос работает

Данный макрос открывает диалоговое окно, как показано на рис, что позволяет пользователю просматривать и открывать файл 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

Как работает этот код

  1. Первое, что делаем — объявляем переменную типа Variant, будет содержать Имя файла, который пользователь выберет. FName — имя нашей переменной.
  2. На шаге 2 мы используем метод GetOpenFilename, чтобы вызвать диалоговое окно, которое позволяет просмотреть содержимое папки и выбрать нужный нам файл. Метод
    GetOpenFilename поддерживает несколько настраиваемых параметров:
    a. FileFilter параметр позволяет указать Тип файла, который мы ищем.
    b. Title позволяет изменить заголовок, который отображается в верхней части диалогового окна.
    c. MultiSelect — параметр множественный выбор позволяет ограничить выбор в один файл.
  3. Если пользователь выбирает файл из диалогового окна, переменная FName берёт Имя файла, который выбрали. Если переменная не пустая, мы используем метод Open из книг
    объекта, чтобы открыть файл.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.
  5. По желанию, можно назначить макрос к кнопке, чтобы открыть файл.

 

deathogre

Пользователь

Сообщений: 14
Регистрация: 09.02.2016

Здрасьте. Как программно открыть книгу эксель и сохранить эту книгу (объект) в глобальной переменной?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#2

13.02.2016 13:53:37

1. Открытие нужной книги запишите макрорекордером — получите готовый код.
2.

Код
Dim Wb As Workbook
Set Wb = ActiveWorkbook
 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#3

13.02.2016 13:53:58

Код
Set wb = Workbooks.Open(filename)
 

deathogre

Пользователь

Сообщений: 14
Регистрация: 09.02.2016

Мне нужно открыть книгу из другой книги

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#5

13.02.2016 13:55:02

Цитата
deathogre написал:
Мне нужно открыть книгу из другой книги

И что?

 

deathogre

Пользователь

Сообщений: 14
Регистрация: 09.02.2016

#6

13.02.2016 14:02:59

Объявил глобальную переменную в модуле ЭтаКнига

Код
Public Главнейшая As Workbook

открыл книгу в модуле АктивХ формы

Код
ChDir "\Margo123Тест"
Workbooks.Open Filename:="\Margo123Тест6.02.2016.xlsm"
Set ЭтаКнига.Главнейшая = Workbooks("\Margo123Тест6.02.2016.xlsm")

выдает ошибку на 3 строке, Run-time error 9 Subscript out of range

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Глобальную переменную в стандартный модуль — будет доступна всюду. И  модуль не нужно указывать.
Если книга уже открыта — зачем указывать путь?

 

deathogre

Пользователь

Сообщений: 14
Регистрация: 09.02.2016

Мне нужно в открытую книгу писать изменения, через глобальную переменную хочу обращаться к этой книге

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#9

13.02.2016 14:21:54

Обращайтесь — кто мешает? )

Код
Public Wb As Workbook
Sub Макрос1()
    Workbooks.Open Filename:="D:ОтчетыСостояние ТС.xlsm"
    Set Wb = ActiveWorkbook
    MsgBox Wb.Name
End Sub
 

KL

Пользователь

Сообщений: 2186
Регистрация: 01.01.2013

#10

13.02.2016 14:53:27

Или даже так:

Код
Public Wb As Workbook
Sub Макрос1()
    Set Wb = Workbooks.Open (Filename:="D:ОтчетыСостояние ТС.xlsm")
    MsgBox Wb.Name
End Sub

KL

 

KL

Пользователь

Сообщений: 2186
Регистрация: 01.01.2013

Кстати, ChDir для открытия книги таким способом не нужен. Он нужен для функции GetOpenFileName, которая, кстати, тоже уже не нужна, т.к. уже давно есть Application.FileDialog(msoFileDialogOpen) :)

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Кирилл, а рекордер упорно пишет  ChDir ))

 

KL

Пользователь

Сообщений: 2186
Регистрация: 01.01.2013

Юр, ну мало ли что на заборах пишут. Рекордер еще и Select обожает :)

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#14

13.02.2016 15:16:46

))

Simple way to open an Excel workbook using VBA and macros.

Syntax

Workbooks.Open ("File Path")

Replace file path with the path to the file on your computer along with the full file name.

Here is what it looks like in the VBA Editor window:

Note: you do not always have to use the file extension of the file but it is a good practice to do so. In my example, using simply «D:test» would also work.

Notes

There are MANY more options for opening a workbook but this post covers the basic usage of it, which will work for 98% of needed uses for this.

Here is a link to a full explanation on using this method if you need a more complex implementation of it: Workbook Open Method.

Make sure to download the accompanying workbooks to test this out in Excel.


Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

Similar Content on TeachExcel

Close Excel Workbook using VBA Macros

Tutorial: How to close an Excel workbook using VBA and macros, including how to save the file before…

Macro to get Data from Another Workbook in Excel

Tutorial:
Macro to get data from a workbook, closed or open, over a network or locally on your comp…

Get User Submitted Data from a Prompt in Excel using VBA Macros

Tutorial: How to prompt a user for their input in Excel.
There is a simple way to do this using VBA …

Interactive Clickable Buttons and Interface Without Using VBA/Macros in Excel

Tutorial:
How to make your Excel dashboards and worksheets more interactive and easier to view and …

Loop through a Range of Cells in Excel VBA/Macros

Tutorial: How to use VBA/Macros to iterate through each cell in a range, either a row, a column, or …

Kill Command in Excel (Delete Files Using VBA)

Tutorial:
How to safely remove, delete, kill any Excel file, or other file, using VBA Macros in Exc…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons

50+ Hours of Video

200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

Здравствуйте! Помогите, пожалуйста!
Кнопка, которой присваивается макрос, находится на листе «Стартовая». На листе «Поиск» в ячейке 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


Все отлично работает. Большое спасибо!


Понравилась статья? Поделить с друзьями:
  • Откройте файл с помощью конвертера резервных копий word
  • Откройте текстовый редактор microsoft word пуск все программы
  • Откройте текстовый процессор ms word 2007
  • Откройте редактор visual basic в excel
  • Откройте программу ms excel введите данные в столбец а начиная с ячейки а1 накидка