Thay đổi phông chữ trong nhiều sổ làm việc (Microsoft Excel)
Hamish đang phải đối mặt với một nhiệm vụ khó khăn: Anh ấy cần thay đổi phông chữ mặc định được sử dụng trong một số lượng lớn sổ làm việc Excel. Anh ấy có hơn 100 sổ làm việc và các phông chữ được sử dụng trong các sổ làm việc đó cần được thay đổi thành phông chữ mới theo chỉ định của công ty. (Bạn biết nhiệm vụ của công ty có thể như thế nào!)
Cách thủ công để tiếp cận tác vụ này là tải từng sổ làm việc, đi qua từng trang tính, chọn các ô và thay đổi phông chữ trong các ô đó. Để làm cho nhiệm vụ của Hamish trở nên phức tạp hơn, anh ta cần thay đổi nhiều phông chữ trong mỗi sổ làm việc. Nói cách khác, với các phông chữ A, B, C và D đã cho, Hamish cần đổi phông chữ A thành C và phông chữ B thành D.
Cách tốt nhất để tiếp cận vấn đề này là sử dụng macro.
Có quá nhiều thao tác tải, tìm kiếm và thay đổi cần thiết đến mức chỉ cần xếp hạng tác phẩm về macro. Macro sau sẽ thực hiện công việc:
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
Để sử dụng macro với sổ làm việc của riêng bạn, có một số điều bạn cần làm. Trước tiên, hãy đảm bảo rằng tất cả các sổ làm việc bạn muốn thay đổi được lưu trữ trong một thư mục duy nhất và bạn biết tên của thư mục đó. Sau đó, trong macro, hãy thay đổi các biến được xác định gần phần đầu của macro. Thay đổi các phần tử của mảng vNamesFind và vNamesReplace để khớp với tên của phông chữ mà bạn muốn tìm và thay thế tương ứng. Sau đó, bạn nên thay đổi biến sPath để nó chứa đường dẫn đầy đủ đến thư mục chứa sổ làm việc của bạn.
(Đừng quên dấu gạch chéo ngược ở cuối đường dẫn.)
Khi bạn chạy macro, nó sẽ lần lượt tải từng sổ làm việc trong thư mục.
Sau đó, nó đi qua từng trang tính trong mỗi sổ làm việc và kiểm tra mọi ô. Nếu ô có một trong các phông chữ được tìm thấy, thì ô đó sẽ được thay thế bằng phông chữ thay thế tương ứng. Khi macro được thực hiện với sổ làm việc, nó sẽ được lưu và sổ làm việc tiếp theo được xử lý.
Những người quan tâm đến việc tránh loại vấn đề này trên trang tính mới nên khám phá cách sử dụng kiểu trong Excel. Bạn có thể xác định bất kỳ số lượng kiểu nào và sử dụng chúng trong toàn bộ sổ làm việc. Nếu sau này bạn cần thay đổi định dạng cho các ô cụ thể, tất cả những gì bạn cần làm là thay đổi các kiểu cơ bản. (Các kiểu đã được đề cập trong các số báo khác của ExcelTips.)
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (2526) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: