Modifica dei caratteri in più cartelle di lavoro (Microsoft Excel)
Hamish sta affrontando un compito arduo: ha bisogno di cambiare i caratteri predefiniti utilizzati in un gran numero di cartelle di lavoro di Excel. Ha oltre 100 cartelle di lavoro e i caratteri utilizzati in tali cartelle di lavoro devono essere modificati con un nuovo carattere specificato dal mandato aziendale. (Sai come possono essere i mandati aziendali!)
Il modo manuale per affrontare questa attività è caricare ogni cartella di lavoro, passare attraverso ogni foglio di lavoro, selezionare le celle e modificare i caratteri in quelle celle. Per rendere il compito di Hamish ancora più complesso, ha bisogno di cambiare più caratteri in ogni cartella di lavoro. In altre parole, dati i caratteri A, B, C e D, Hamish deve cambiare il carattere A in C e il carattere B in D.
Il modo migliore per affrontare questo problema è attraverso l’uso di una macro.
C’è così tanto caricamento, ricerca e modifica che è necessario che ha senso solo relegare il lavoro a una macro. La seguente macro dovrebbe fare il lavoro:
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
Per utilizzare la macro con le tue cartelle di lavoro, ci sono un paio di cose che devi fare. Innanzitutto, assicurati che tutte le cartelle di lavoro che desideri modificare siano archiviate in una singola cartella e di conoscere il nome della cartella. Quindi, all’interno della macro, modifica le variabili definite vicino all’inizio della macro. Modificare gli elementi degli array vNamesFind e vNamesReplace in modo che corrispondano ai nomi dei caratteri che si desidera trovare e sostituire rispettivamente. È quindi necessario modificare la variabile sPath in modo che contenga il percorso completo della cartella contenente le cartelle di lavoro.
(Non dimenticare una barra rovesciata finale sul percorso.)
Quando esegui la macro, carica a turno ogni cartella di lavoro nella cartella.
Quindi, passa attraverso ogni foglio di lavoro in ogni cartella di lavoro ed esamina ogni cella. Se la cella ha uno dei caratteri da trovare, viene sostituito con il rispettivo carattere sostitutivo. Quando la macro viene eseguita con la cartella di lavoro, viene salvata e viene elaborata la cartella di lavoro successiva.
Coloro che sono interessati a evitare questo tipo di problema sui nuovi fogli di lavoro dovrebbero esplorare come utilizzare gli stili in Excel. È possibile definire un numero qualsiasi di stili e utilizzarli in una cartella di lavoro. Se in un secondo momento è necessario modificare la formattazione per celle specifiche, è sufficiente modificare gli stili sottostanti. (Gli stili sono stati trattati in altri numeri di ExcelTips.)
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (564) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia di menu precedente di Excel qui: