• Code để bảo vệ văn bản trừ các đoạn formfield
  • Code để bảo vệ văn bản trừ các đoạn formfield

    vuthaiha90 > 24-10-17, 12:11 PM

    Chào các bác, em có 1 đoạn code thế này, bình thường chạy ok rồi, nhưng giờ người ta yêu cầu protect lại đoạn văn, trừ những đoạn đang formfield. Em có thêm dòng: ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="123456" nhưng không thấy chạy. Code em đây, bác nào giúp em em sai ở đâu ạ: 
    Mã PHP:
    Dim dbs As DAO.Database
    Dim rst 
    As DAO.Recordset
    Dim i 
    As Long
    Dim oApp 
    As Object
    Dim Doc 
    As Object
    Dim strDocName 
    As String
    Dim tblNoInDoc 
    As Byte
    Dim oWordTbl 
    As Object

    If Me.ComboLoaivay.Value "Cho vay Kinh doanh" Then

    temp 
    """"

    Set oApp CreateObject("Word.Application")
    oApp.Visible True
    strDocName 
    """" CurrentProject.Path "\Word\TC\KD\NH" "\07_Hop dong CV NH_tung lan ca nhan KD OK.doc" """"
    Set Doc oApp.Documents.Add(strDocName)

    Doc.FormFields("SoHDTDTC").Result DLookup("SoHDTC""T_infovayTC")
    ......
    oApp.ActiveDocument.SaveAs Filename:="""" CurrentProject.Path "\Preview\TC" "\" & "HDCV-KD" & "_" & DLookup("Nguoidaidien", "T_KH2") & "_" & Me.HDTDngayTCchu & ".doc" & """"
    oApp.ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="
    123456" '
    Set oApp = Nothing

    Else
    ....
    End If
    End Sub 
    Ghi chú: Em có văn bản mẫu trắng tinh cần điền 1 vài thông tin khách hàng bên ngoài vào, sau khi dùng Doc.FormField xong Save As sang file Word mới để file trắng kia dùng cho lần sau. Còn file SaveAs thì muốn bảo vệ nó lại vì có các điều khoản cấm sửa. Hay là em phải bảo vệ file trắng kia, rồi mở khóa để điền thông tin rồi lưu lại với tên khác ạ. Các bác thấy em làm sai ở đâu ạ, cảm ơn các bác trước
  • RE: Code để bảo vệ văn bản trừ các đoạn formfield

    ongke0711 > 24-10-17, 01:17 PM

    007  Sao bạn không sử dụng luôn công cụ của Word mà viết code chi cho mệt vậy.

    Vô Menu Review, có cái tool "Restrict Editing" -> chọn "Editing Restrictions" -> click chọn checkbox "Allow only...." -> chọn "Filling in Form" -> "Start..."
    Cách này nó sẽ khóa việc chỉnh sửa nội dung file Word ngoại trừ các FormFields.

    Còn trong câu lệnh ở trên tôi nghĩ bạn thử đặt câu lệnh "Protect.." trước lệnh "Save as" xem như thế nào.
  • RE: Code để bảo vệ văn bản trừ các đoạn formfield

    vuthaiha90 > 24-10-17, 02:36 PM

    (24-10-17, 01:17 PM)ongke0711 Đã viết: 007  Sao bạn không sử dụng luôn công cụ của Word mà viết code chi cho mệt vậy.

    Vô Menu Review, có cái tool "Restrict Editing" -> chọn "Editing Restrictions" -> click chọn checkbox "Allow only...." -> chọn "Filling in Form" -> "Start..."
    Cách này nó sẽ khóa việc chỉnh sửa nội dung file Word ngoại trừ các FormFields.

    Còn trong câu lệnh ở trên tôi nghĩ bạn thử đặt câu lệnh "Protect.." trước lệnh "Save as" xem như thế nào.


    Dạ thế cho em hỏi nếu mang chương trình này sang máy khác thì có phải lại Menu Review... nữa không ạ? nếu không chắc phải code. Mà em đặt đằng sau SaveAs vì đặt đằng trước em nghĩ ActiveDocument là nó hiểu file trắng chứ nhỉ
  • RE: Code để bảo vệ văn bản trừ các đoạn formfield

    ongke0711 > 24-10-17, 02:57 PM

    (24-10-17, 02:36 PM)vuthaiha90 Đã viết: Dạ thế cho em hỏi nếu mang chương trình này sang máy khác thì có phải lại Menu Review... nữa không ạ? nếu không chắc phải code. Mà em đặt đằng sau SaveAs vì đặt đằng trước em nghĩ ActiveDocument là nó hiểu file trắng chứ nhỉ

    Word phiên bản nào cũng có cái menu này chỉ khác cái tên chút thôi nên bạn đâu cầu set up lại, giống như bạn đặt mật khẩu cho file excel vậy thôi.
    Bạn cứ test thử, tôi không có file này nên cũng ko test được.
  • RE: Code để bảo vệ văn bản trừ các đoạn formfield

    vuthaiha90 > 24-10-17, 03:34 PM

    (24-10-17, 02:57 PM)ongke0711 Đã viết:
    (24-10-17, 02:36 PM)vuthaiha90 Đã viết: Dạ thế cho em hỏi nếu mang chương trình này sang máy khác thì có phải lại Menu Review... nữa không ạ? nếu không chắc phải code. Mà em đặt đằng sau SaveAs vì đặt đằng trước em nghĩ ActiveDocument là nó hiểu file trắng chứ nhỉ

    Word phiên bản nào cũng có cái menu này chỉ khác cái tên chút thôi nên bạn đâu cầu set up lại, giống như bạn đặt mật khẩu cho file excel vậy thôi.
    Bạn cứ test thử, tôi không có file này nên cũng ko test được.

    Vâng, em đặt xong câu hỏi quay ra thử đã thấy là đúng chỉ cần setup 1 lần. Bác xem viết code được không ạ, tại vì em thử khóa trước rồi nhưng đến đoạn chạy code bảng biểu, tức là thay đổi nội dung file trắng, thì nó không chạy được (không hoàn toàn cả văn bản là formfield, còn chỗ bảng biểu nữa ạ)
  • RE: Code để bảo vệ văn bản trừ các đoạn formfield

    ongke0711 > 24-10-17, 03:43 PM

    Word chỉ có tính năng protect nội dung trừ Form fill thì bạn chỉ làm được đến đó. Sao bảng biểu bạn không làm dạng FormField luôn? không hiểu vụ bảng biểu cho lắm.
  • RE: Code để bảo vệ văn bản trừ các đoạn formfield

    vuthaiha90 > 30-10-17, 03:20 PM

    (24-10-17, 03:43 PM)ongke0711 Đã viết: Word chỉ có tính năng protect nội dung trừ Form fill thì bạn chỉ làm được đến đó. Sao bảng biểu bạn không làm dạng FormField luôn? không hiểu vụ bảng biểu cho lắm.

    Em xin lỗi, mấy nay em cũng thử các kiểu rồi, đặt trước, đặt sau. Rồi khóa luôn file trắng trước khi thêm formfield vào rồi đóng lại, nhưng vẫn không được, các bác xem code của em ở đây, em bị làm sai chỗ nào ạ? Em cảm ơn
  • RE: Code để bảo vệ văn bản trừ các đoạn formfield

    maidinhdan > 31-10-17, 12:25 AM

    Bạn xem và tải Demo của chủ đề này (Tác giả Mặt Trời Ngủ quên)
    [Help] Protect nhiều file Words theo đường dẫn động
  • RE: Code để bảo vệ văn bản trừ các đoạn formfield

    ongke0711 > 31-10-17, 11:32 AM

    (30-10-17, 03:20 PM)vuthaiha90 Đã viết: Em xin lỗi, mấy nay em cũng thử các kiểu rồi, đặt trước, đặt sau. Rồi khóa luôn file trắng trước khi thêm formfield vào rồi đóng lại, nhưng vẫn không được, các bác xem code của em ở đây, em bị làm sai chỗ nào ạ? Em cảm ơn

    - Ở cửa số code VBA, bạn phải luôn luôn thêm dòng: để kiểm tra có biến nào dư thừa hoặc câu lệnh viết sai.
    Mã PHP:
    Option Compare Database
    Option Explicit 

    - Bạn thêm thư viện Microsoft Word 1x.00 Object Library để dòng lệnh .Protect chạy được.
    => Sau khi thêm sẽ chạy OK.
  • RE: Code để bảo vệ văn bản trừ các đoạn formfield

    MTNQ > 06-11-17, 01:35 AM

    (30-10-17, 03:20 PM)vuthaiha90 Đã viết: Em xin lỗi, mấy nay em cũng thử các kiểu rồi, đặt trước, đặt sau. Rồi khóa luôn file trắng trước khi thêm formfield vào rồi đóng lại, nhưng vẫn không được, các bác xem code của em ở đây, em bị làm sai chỗ nào ạ? Em cảm ơn

    Bạn xem thử File mình đã sửa có đúng ý không nhé: Protect Word.rar

    P/S: MTNQ mới up lại file, thay hàm Dir bằng FileSystemObject do hàm Dir không hỗ trợ tên file Tiếng Việt có dấu