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: