Това ръководство ще ви запознае с работата с Обект на работна книга във VBA.
Обектът на работната книга
Първо, за да взаимодействате с работни книги във VBA, трябва да разберете Обект на работна книга.
С обекта на работната книга можете да се позовавате на работните книги по техните имена по следния начин:
1 | Работни книги ("Book2.xlsm"). Активирайте |
Този код обаче ще работи само ако работната книга е отворена. Ако работната книга е затворена, ще трябва да предоставите пълния път на работната книга:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Вместо да въвеждате пълния път, ако желаната от вас работна книга е в същата директория с работната книга, където се съхранява вашият код, можете да използвате този код на ред, за да отворите работната книга:
1 | Workbooks.Open (ThisWorkbook.Path & "\ book2.xlsm") |
Това използва обекта ThisWorkbook, който ще обсъдим в следващия раздел.
Индексен номер на работната книга
И накрая, можете да посочите работните книги по техния „номер на индекса“. Индексният номер на работна книга съответства на реда на отваряне на работната книга (технически нейната позиция на работната книга в колекцията на работните книги).
1 | Работни тетрадки (1). Активирайте |
Това е полезно, ако искате да направите нещо като затваряне на първата (или последната) отворена работна книга.
Активирайте Работна книга, ActiveWorkbook и ThisWorkbook
Ако има работна книга НЕАКТИВЕН, можете да получите достъп до обектите на работната книга по следния начин:
1 | Работни книги ("Book2.xlsm"). Листове ("Sheet1"). Диапазон ("A1"). Стойност = 1 |
Ако обаче работната книга е активна, можете да пропуснете обекта на работната книга:
1 | Листове ("Sheet1"). Диапазон ("A1"). Value = 1 |
И ако искате да взаимодействате с активния лист на работната книга, можете също да пропуснете обекта на листа:
1 | Диапазон ("A1"). Стойност = 1 |
Активирайте работната книга
За да активирате работна книга, използвайте Активиране на метода.
1 | Работни книги ("Book2.xlsm"). Активирайте |
Сега можете да взаимодействате с обекта на Book2, без да посочвате изрично името на работната книга.
ActiveWorkbook
The ActiveWorkbook обект винаги се отнасят до активната работна книга. Това е полезно, ако искате да присвоите ActiveWorkbook на променлива, която да използвате по -късно.
12 | Dim wb Като работна книгаЗадайте wb = ActiveWorkbook |
Тази работна книга
The Тази работна книга обект винаги се отнася до работната книга, където се съхранява работещият код. За да активирате ThisWorkbook, използвайте този ред код:
1 | ThisWorkbook.Activate |
Отворете работна книга
За да отворите работна книга, използвайте Отворен метод:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Новооткритата работна книга винаги ще се превърне в ActiveWorkbook, което ви позволява лесно да взаимодействате с него.
1 | ActiveWorkbook.Save |
Отвореният метод има няколко други аргумента, които ви позволяват да отваряте само за четене, да отваряте защитена с парола работна книга и др. Той е разгледан тук в нашата статия за отваряне / затваряне на работни книги.
Отваряне и присвояване на променлива
Можете също така да отворите работна книга и да я присвоите на променлива едновременно:
12 | Dim wb Като работна книгаЗадайте wb = Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Отворете диалоговия прозорец за файлове
Можете също да задействате диалоговия прозорец Open File по следния начин:
12345678 | Sub OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Работни книги. Отваряне (strFile)End Sub |
Създаване на нова (добавяне) работна книга
Този ред код ще създаде нова работна книга:
1 | Работни книги |
Новата работна книга сега се превръща в ActiveWorkbook, което ви позволява да взаимодействате с него (напр. запазете новата работна книга).
Добавяне на нова работна книга към променлива
Можете също да добавите нова работна книга директно към променлива:
12 | Dim wb Като работна книгаЗадайте wb = Работни книги |
Затворете работната книга
Затваряне и запазване
За да затворите работна книга със записване, използвайте Метод за затваряне с Запазите промените зададено на TRUE:
1 | ActiveWorkbook.Close SaveChanges: = Вярно |
Затваряне без запис
За да затворите без запазване, задайте Запазите промените равно на FALSE:
1 | ActiveWorkbook.Close SaveChanges: = False |
Работна книга Запазване като
The Метод SaveAs се използва за запазване на работна книга като.
За да запазите работна книга с ново име, в същата директория, можете да използвате това:
1 | ActiveWorkbook.Save Като „нов“ |
където „new“ е новото име на файла.
За да запишете работна книга в нова директория с конкретно разширение на файла, просто посочете новата директория и името на файла:
1 | ActiveWorkbook.SaveAs "C: \ Users \ StevePC2 \ Downloads \ new.xlsm" |
Други примери за VBA на работната книга
Име на работната книга
За да получите името на работна книга:
1 | MsgBox ActiveWorkbook.Name |
Защитете работната тетрадка
За да защитите структурата на работната книга от редактиране, можете да използвате Метод за защита (парола по избор):
1 | Работни книги ("book1.xlsm"). Защитете "парола" |
За да премахнете защитата на работна книга, използвайте Метод UnProtect:
1 | Работни книги ("book1.xlsm"). Премахнете защитата на "паролата" |
Прегледайте всички отворени работни книги
За да преминете през всички отворени работни книги:
123456789 | Sub LoopThroughWBs ()Dim wb Като работна книгаЗа всяка wb в работни книгиMsgBox wb.NameСледваща wbEnd Sub |
Работна книга Активирайте събитие
Можете да стартирате някакъв код всеки път, когато се отвори конкретна работна книга с Работна книга Отворено събитие.
Поставете тази процедура в модула ThisWorkbook на работната си книга:
123 | Private Sub Workbook_Open ()Листове („лист1“). АктивирайтеEnd Sub |
Тази процедура ще се активира Лист 1 всеки път, когато работната книга се отваря.