Cambio de fuentes en varios libros de trabajo (Microsoft Excel)
Hamish se enfrenta a una tarea abrumadora: necesita cambiar las fuentes predeterminadas que se utilizan en una gran cantidad de libros de Excel. Tiene más de 100 libros de trabajo, y las fuentes utilizadas en esos libros de trabajo deben cambiarse a una nueva fuente especificada por mandato corporativo. (¡Sabes cómo pueden ser los mandatos corporativos!)
La forma manual de abordar esta tarea es cargar cada libro de trabajo, revisar cada hoja de trabajo, seleccionar las celdas y cambiar las fuentes en esas celdas. Para hacer que la tarea de Hamish sea aún más compleja, necesita cambiar varias fuentes en cada libro de trabajo. En otras palabras, dadas las fuentes A, B, C y D, Hamish necesita cambiar la fuente A a C y la fuente B a D.
La mejor forma de abordar este problema es mediante el uso de una macro.
Hay tanta carga, búsqueda y cambio que es necesario que solo tiene sentido relegar el trabajo a una macro. La siguiente macro debería hacer el trabajo:
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
Para usar la macro con sus propios libros de trabajo, hay un par de cosas que debe hacer. Primero, asegúrese de que todos los libros de trabajo que desea cambiar estén almacenados en una sola carpeta y de que sepa el nombre de la carpeta. Luego, dentro de la macro, cambie las variables definidas cerca del comienzo de la macro. Cambie los elementos de las matrices vNamesFind y vNamesReplace para que coincidan con los nombres de las fuentes que desea buscar y reemplazar respectivamente. Luego, debe cambiar la variable sPath para que contenga la ruta completa a la carpeta que contiene sus libros de trabajo.
(No olvides una barra invertida al final de la ruta.)
Cuando ejecuta la macro, carga cada libro en la carpeta, a su vez.
Luego, revisa cada hoja de trabajo en cada libro de trabajo y examina cada celda. Si la celda tiene una de las fuentes para encontrar, entonces se reemplaza con la fuente de reemplazo correspondiente. Cuando la macro termina con el libro de trabajo, se guarda y se procesa el siguiente libro de trabajo.
Aquellos interesados en evitar este tipo de problemas en nuevas hojas de trabajo deberían explorar cómo usar estilos en Excel. Puede definir cualquier número de estilos y utilizarlos en un libro de trabajo. Si luego necesita cambiar el formato de celdas específicas, todo lo que necesita hacer es cambiar los estilos subyacentes. (Los estilos se han tratado en otros números de ExcelTips.)
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (564) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
link: / excel-Changing_Fonts_in_Multiple_Workbooks [Cambio de fuentes en varios libros de trabajo]
.