Перед Хэмишем стоит непростая задача: ему нужно изменить шрифты по умолчанию, используемые в большом количестве книг 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 [Изменение шрифтов в нескольких книгах].