Изменение шрифтов в нескольких книгах (Microsoft Excel)
Перед Хэмишем стоит непростая задача: ему нужно изменить шрифты по умолчанию, используемые в большом количестве книг Excel. У него более 100 рабочих тетрадей, и шрифты, используемые в этих книгах, необходимо заменить на новый шрифт, определенный корпоративным мандатом. (Вы знаете, какими могут быть корпоративные мандаты!)
Ручной способ подойти к этой задаче — загрузить каждую книгу, просмотреть каждый рабочий лист, выбрать ячейки и изменить шрифты в этих ячейках. Чтобы сделать задачу Хэмиша еще более сложной, ему нужно изменить несколько шрифтов в каждой книге. Другими словами, для заданных шрифтов A, B, C и D Хэмишу необходимо изменить шрифт A на C и шрифт B на D.
Лучший способ решить эту проблему — использовать макрос.
Необходимо столько загрузки, поиска и изменения, что имеет смысл переложить работу на макрос. Следующий макрос должен сработать:
Sub ChangeFontNames() Dim vNamesFind Dim vNamesReplace Dim sFileName As String Dim Wkb As Workbook Dim Wks As Worksheet Dim rCell As Range Dim x As Integer Dim iFonts As Integer Dim sPath As String 'Change these lines as appropriate 'These are the fontnames to find vNamesFind = Array("Arial", "Allegro BT") 'These are the fontnames to replace vNamesReplace = Array("Wingdings", "Times New Roman") 'This is the folder to look for xls files sPath = "C:\foldername\" Application.ScreenUpdating = False iFonts = UBound(vNamesFind) If iFonts <> UBound(vNamesReplace) Then MsgBox "Find and Replace Arrays must be the same size" Exit Sub End If sFileName = Dir(sPath & "*.xls") Do While sFileName <> "" Set Wkb = Workbooks.Open(sPath & sFileName) For Each Wks In Wkb.Worksheets For Each rCell In Wks.UsedRange For x = 0 To iFonts With rCell.Font If .Name = vNamesFind(x) Then _ .Name = vNamesReplace(x) End With Next Next Next Wkb.Close(True) sFileName = Dir Loop Application.ScreenUpdating = True Set rCell = Nothing Set Wks = Nothing Set Wkb = Nothing End Sub
Чтобы использовать макрос в своих книгах, вам нужно сделать несколько вещей. Во-первых, убедитесь, что все книги, которые вы хотите изменить, хранятся в одной папке и что вы знаете имя папки. Затем в макросе измените переменные, определенные в начале макроса. Измените элементы массивов vNamesFind и vNamesReplace, чтобы они соответствовали именам шрифтов, которые вы хотите найти и заменить соответственно. Затем вам следует изменить переменную sPath, чтобы она содержала полный путь к папке, содержащей ваши книги.
(Не забывайте обратную косую черту в конце пути.)
Когда вы запускаете макрос, он по очереди загружает каждую книгу в папку.
Затем он просматривает каждый лист в каждой книге и исследует каждую ячейку. Если в ячейке есть один из шрифтов, который нужно найти, он заменяется соответствующим заменяющим шрифтом. Когда макрос завершает работу с книгой, он сохраняется, и следующая книга обрабатывается.
Тем, кто заинтересован в том, чтобы избежать проблем этого типа на новых листах, следует изучить, как использовать стили в Excel. Вы можете определить любое количество стилей и использовать их в книге. Если позже вам потребуется изменить форматирование определенных ячеек, все, что вам нужно сделать, это изменить базовые стили. (Стили описаны в других выпусках ExcelTips.)
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (564) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Changing_Fonts_in_Multiple_Workbooks [Изменение шрифтов в нескольких книгах]
.