25/05/2018, 23:30

Mã hóa dữ liệu tự động: Cách thay thế tất cả chữ số bằng dấu X

Mã hóa dữ liệu tự động: Cách để thay thế tất cả chữ số bằng dấu X Dạo gần đây tôi có rơi vào một trường hợp như sau: một công ty đối tác muốn được xem qua bố cục các bài báo cáo và thuyết trình mà tôi đã chuẩn bị từ trước. Để tránh để lộ những số liệu bí mật của công ty mình, tôi phải nghĩ ...

Mã hóa dữ liệu tự động: Cách để thay thế tất cả chữ số bằng dấu X

Dạo gần đây tôi có rơi vào một trường hợp như sau: một công ty đối tác muốn được xem qua bố cục các bài báo cáo và thuyết trình mà tôi đã chuẩn bị từ trước. Để tránh để lộ những số liệu bí mật của công ty mình, tôi phải nghĩ cách để mã hóa dữ liệu lại. Một trong những phương pháp mà tôi nghĩ đến đó là xóa đi tất cả bảng biểu và thay thế tất cả các chữ số bằng một ký tự đặc biệt (ở đây tôi lựa chọn dấu X để mã hóa số liệu).

Sau khi xác định được cách thức thực hiện, việc đầu tiên là phải tìm cách viết đè nội dung mới lên toàn bộ văn bản. Lúc đầu tôi băn khoăn liệu có một công thức đơn giản có dạng “Tìm kiếm/Thay thế”, với chức năng tự động biến tất cả các chữ số thành dấu X hay không. Không may là có vẻ chức năng “Tìm kiếm/Thay thế” cơ bản trong Microsoft không thực sự hỗ trợ điều đó. Vì thế, tôi bị kẹt giữa 2 sự lựa chọn, hoặc là thực hiện 10 lệnh tìm kiếm và thay thế liên tục cho từng tệp dữ liệu một (từ số 0 đến số 9), hoặc tự viết ra một macro VBA mới. Bạn biết tôi đã chọn phương án nào rồi đấy?

Ban đầu macro này được viết dành riêng cho Powerpoint nhưng tôi đã phát triển nó lên cho cả Microsoft Word bởi vì thực chất nhiều người cũng có nhu cầu cần bảo mật thông tin trong Word nữa. Rất tiếc là không có phiên bản dành cho Excel do nó sử dụng quá nhiều biến số cần phải xét đến nên rất khó để tạo 1 macro thích hợp cho tất cả người dùng. Tuy vậy, nếu bạn vẫn muốn sử dụng chức năng này trong Excel, hãy tham khảo bài viết của tôi trên The Code Vault Blog về cách tìm kiếm & thay thế mã lệnh macro tại đây.

Lệnh macro VBA dành cho Powerpoint

Lệnh macro này sẽ hoạt động xuyên suốt tất cả các slide đang bật trên nền cửa sổ thuyết trình và lập tức thay thế tất cả các chữ số thành dấu X trong tích tắc! Nếu bạn muốn biết cách để chèn macro này vào trong Powerpoint, tham khảo bài viết của tôi về cách tạo 1 lệnh macro tại đây.

Lệnh macro VBA dành cho Powerpoint

Sub ClassifyNumbers()
'PURPOSE: Replace all numerical values with an "x" in the active PowerPoint Presentation
'SOURCE: www.TheSpreadsheetGuru.com

Dim fnd As Variant
Dim rplc As Variant
Dim NumberArray As Variant
Dim TxtRng As TextRange
Dim TmpRng As TextRange
Dim sld As Slide
Dim shp As Shape

'Find/Replace Variables
  NumberArray = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  rplc = "x"
            
'Loop Through Each Slide
  For Each sld In ActivePresentation.Slides
    For y = LBound(NumberArray) To UBound(NumberArray)
      For Each shp In sld.Shapes

        fnd = NumberArray(y)
        
        If shp.HasTextFrame Then
          If shp.TextFrame.HasText Then
          
            Set TxtRng = shp.TextFrame.TextRange
            
            Set TmpRng = TxtRng.Replace(FindWhat:=fnd, _
              ReplaceWhat:=rplc, WholeWords:=False)
              
          End If
       End If
        
        'Replace Other Instances (if necessary)
          Do While Not TmpRng Is Nothing
            Set TmpRng = TxtRng.Replace(FindWhat:=fnd, _
              ReplaceWhat:=rplc, WholeWords:=False)
          Loop

      Next shp
    Next y
  Next sld
                 
MsgBox "All numbers are now classified (ie " & rplc & rplc & ")!"

End Sub

Lệnh macro VBA dành cho Word

Lệnh macro này sẽ hoạt động xuyên suốt tất cả các trang đang bật trên nền cửa sổ soạn thảo và lập tức thay thế tất cả các chữ số thành dấu X trong tích tắc! Nếu bạn muốn biết cách để chèn macro này vào trong Word, tham khảo bài viết của tôi về cách tạo 1 lệnh macro tại đây.

Lệnh macro VBA dành cho Word

Sub ClassifyNumbers()
'PURPOSE: Replace all numerical values with an "x" in the active Word Document
'SOURCE: www.TheSpreadsheetGuru.com

Dim rplc As Variant
Dim NumberArray As Variant

Application.ScreenUpdating = False

'Find/Replace Variables
  NumberArray = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  rplc = "x"
            
'Loop through all numbers and replace them
  For x = LBound(NumberArray) To UBound(NumberArray)
   
    With ActiveDocument.Content.Find
      .Forward = True
      .Wrap = wdFindStop
      .Execute _
        FindText:=NumberArray(x), _
        ReplaceWith:=rplc, _
        Replace:=wdReplaceAll, _
        MatchCase:=False
    End With
    
  Next x
                
Application.ScreenUpdating = True
                
MsgBox "All numbers are now classified (ie " & rplc & rplc & ")!"

End Sub
0