В този урок ще научите как да използвате VBA за отваряне и затваряне на работна книга на Excel по няколко начина.
VBA ви позволява да отваряте или затваряте файлове, използвайки стандартните методи .Отворете и .Близо.
Ако искате да научите как да проверите дали файл съществува, преди да опитате да го отворите, можете да кликнете върху тази връзка: VBA File Exists
Отворете работна книга във VBA
Отворете работната книга от пътя
Ако знаете кой файл искате да отворите, можете да посочите пълното му име на пътя във функцията. Ето кода:
1 | Workbooks.Open "C: \ VBA Folder \ Примерен файл 1.xlsx" |
Този ред на кода отваря файл „Примерен файл 1“ от „Папка VBA“.
Отворена работна книга - ActiveWorkbook
Когато отворите работна книга, тя автоматично се превръща в ActiveWorkbook. Можете да се позовете на новоотворената работна книга така:
1 | ActiveWorkbook.Save |
Когато посочвате лист или диапазон и пропускате името на работната книга, VBA ще приеме, че имате предвид ActiveWorkbook:
1 | Листове ("Лист1"). Име = "Въвеждане" |
Отворете работната книга и присвойте на променлива
Можете също така да отворите работна книга и да я присвоите директно на променлива на обект. Тази процедура ще отвори работна книга за wb променлива и след това запишете работната книга.
123456 | Sub OpenWorkbookToVariable ()Dim wb Като работна книгаЗадайте wb = Workbooks.Open ("C: \ VBA Folder \ Примерен файл 1.xlsx")wb.SaveEnd Sub |
Присвояването на работни книги на променливи, когато се отварят, е най -добрият начин да следите работните си книги
Работна книга Отворете диалогов прозорец за файлове
Можете също да задействате диалоговия прозорец „Отворени файлове“ на работната книга. Това позволява на потребителя да отиде до файл и да го отвори:
12345678 | Sub OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Работни книги. Отваряне (strFile)End Sub |
Както можете да видите на изображение 1, с този подход потребителите могат да избират кой файл да отворят. Диалоговият прозорец Open File може да бъде силно персонализиран. Можете да зададете по подразбиране определена папка, да изберете кои типове файлове да се виждат (например… само xlsx) и др. Прочетете нашия урок в диалоговия прозорец Open File за подробни примери.
Отворете Нова работна книга
Този ред код ще отвори нова работна книга:
1 | Работни книги |
Отворете нова работна книга за променлива
Тази процедура ще отвори нова работна книга, като я присвои на променлива wb:
1234 | Sub OpenNewWorkbook ()Dim wb Като работна книгаЗадайте wb = Работни книгиEnd Sub |
Отворете синтаксиса на работната книга
Когато използвате Workbooks.Open, може да забележите, че при отварянето на работната книга има много опции:
Името на файла е задължително. Всички други аргументи са незадължителни - и вероятно няма да е необходимо да знаете повечето от другите аргументи. Ето двете най -често срещани:
Отворете работна книга само за четене
Когато работната книга е отворена само за четене, не можете да запазвате оригиналния файл. Това предотвратява редактирането на файла от потребителя.
1 | Workbooks.Open "C: \ VBA Folder \ Примерен файл 1.xlsx",, Вярно |
Отворете защитена с парола работна книга
Работна книга може да е защитена с парола. Използвайте този код, за да отворите защитена с парола работна книга:
1 | Workbooks.Open "C: \ VBA Folder \ Примерен файл 1.xlsx",,, "password" |
Отворете бележки за синтаксис на работна книга
Забележете, че в горното изображение включихме скоби „(“, за да покажем синтаксиса. Ако използвате скоби, когато работите с работни книги. Отворете, трябва да присвоите работната книга на променлива:
1234 | Sub OpenWB ()Dim wb Като работна книгаЗадайте wb = Workbooks.Open ("C: \ VBA Folder \ Примерен файл 1.xlsx", True, True)End Sub |
Затворете работна книга във VBA
Затворете конкретна работна книга
Подобно на отварянето на работна книга, има няколко начина за затваряне на файл. Ако знаете кой файл искате да затворите, можете да използвате следния код:
1 | Workbooks.Close ("C: \ VBA Folder \ Примерен файл 1.xlsx") |
Този ред код затваря файла „Примерен файл 1“, ако е отворен. Ако не, той ще върне грешка, така че трябва да се погрижите за обработката на грешки.
Затворете активната работна книга
Ако искате да затворите работната книга, която в момента е активна, този ред код ще ви позволи да направите това:
1 | ActiveWorkbook.Close |
Затворете всички отворени работни книги
За да затворите всички отворени работни книги, можете просто да използвате този код:
1 | Работни тетрадки. Затворете |
Затворете първата отворена работна книга
Това ще затвори първата отворена/създадена работна книга:
1 | Работни тетрадки (1). Затвори |
Заменете 1 с 2, за да затворите втората отворена / създадена работна книга и т.н.
Затваряне без запазване
Това ще затвори работна книга без запазване и без показване на подканата за запазване:
1 | ActiveWorkbook.Close savechanges: = False |
Запазване и затваряне без подкана
По същия начин това ще запази и затвори работна книга, без да показва подканата за запазване:
1 | ActiveWorkbook.Close savechanges: = True |
Забележка: Има няколко други начина да посочите дали да запазите или не запазите работна книга, както и дали да показвате подкани или не. Това е обсъдено по -подробно тук.
Други отворени примери на работната книга
Отворете множество нови работни книги
Тази процедура ще отвори множество нови работни книги, присвоявайки новите работни книги на масив:
12345678 | Sub OpenMultipleNewWorkbooks ()Dim arrWb (3) Като работна книгаDim i As IntegerЗа i = 1 до 3Задайте arrWb (i) = Работни книгиСледва iEnd Sub |
Отворете всички работни книги на Excel в папка
Тази процедура ще отвори всички работни книги на Excel в папка, като използвате инструмента за избор на диалогов прозорец за отваряне на файлове.
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder ()Dim wb Като работна книгаЗатъмнете dlgFD като FileDialogDim strFolder As StringDim strFileName As StringЗадайте dlgFD = Application.FileDialog (msoFileDialogFolderPicker)Ако dlgFD.Show = -1 ТогаваstrFolder = dlgFD.SelectedItems (1) & Application.PathSeparatorstrFileName = Dir (strFolder & "*.xls*")Do While strFileName ""Задайте wb = Работни книги. Отворете (strFolder & strFileName)strFileName = РежЦикълКрай АкоEnd Sub |
Проверете дали работна книга е отворена
Тази процедура ще тества дали работна книга е отворена:
1234567891011 | Sub TestByWorkbookName ()Dim wb Като работна книгаЗа всяка wb в работни книгиАко wb.Name = "Нов работен лист на Microsoft Excel.xls" ТогаваMsgBox "Намерих го"Излезте от кода за повикване на Sub тук, просто ще излезем засегаКрай АкоСледващияEnd Sub |
Workbook_Open Event
VBA Събитията са „тригери“, които казват на VBA да изпълнява определен код. Можете да настроите събития от работна книга за отваряне, затваряне, преди запазване, след запазване и др.
Прочетете нашия урок Workbook_Open Event, за да научите повече за автоматично изпълняваните макроси при отваряне на работна книга.