+ Reply to Thread
Results 1 to 3 of 3

problem protecting word document by macro in excel

  1. #1
    natanz
    Guest

    problem protecting word document by macro in excel

    I keep a log of rfi's(requests for information) in excel. when i
    answer them i open up a document from a template in word. i have been
    working on automating this process. so far i have gotten to the point
    where i can open a document in word, unprotect it, change some of it's
    formfields and bookmarks. but now i am trying to reprotect it. So
    here's my code:

    Sub OpenTemplate(DocType As String) 'in this case it is "RFI Response"

    Dim WordApp As Object
    Set WordApp = Nothing
    Dim worddoc As Object
    Dim TemplateFile As String
    Dim TemplateDir As String

    'is this code doing what i want it to do, namely checking if there
    is an open copy of MS
    'word
    On Error Resume Next
    Set WordApp = GetObject("word.application")
    If Err.Number <> 0 Then
    Set WordApp = CreateObject("word.application")
    End If
    TemplateDir = "C:\Documents and Settings\My Documents\forms\"
    TemplateFile = TemplateDir & DocType & ".dot"
    WordApp.Documents.Add Template:=TemplateFile
    Set worddoc = WordApp.activedocument

    If DocType = "rfi response" Then
    Call RFIInfo(worddoc)
    End If

    WordApp.Visible = True
    End Sub


    and then:

    Public Sub RFIInfo(worddoc As Object)
    worddoc.Unprotect
    worddoc.Bookmarks("projname").Range.Text = _
    ActiveWorkbook.Sheets("project info").Range("a7")
    worddoc.Bookmarks("projnum").Range.Text = _
    "FILE: " & ActiveWorkbook.Sheets("project
    info").Range("b7")
    With worddoc.FormFields("dropdown1").DropDown.ListEntries
    .Add ("september")
    .Add ("marching orders")
    .Add ("Mr. Humboldt")
    End With

    'everything works exactly as i need until this last line:
    worddoc.Protect Type:=wdAllowOnlyFormFields, noreset:=True
    End Sub

    so i think i may be doing a couple things wrong. I don't think i am
    checking for an open copy of word exactly right, in my on error resume
    next, but it is working.
    i am also not sure i am passing the object variable worddoc with enough
    information. Is it a problem that the variable worddoc has the same
    name in both subs? I feel like it is not the same thing after it is
    passed, maybe i should have a ByRef in there? Anyway, i am an
    intermediate newbie at this, just kind of fumbling my way through. Any
    suggestions about ways to make my code better, cleaner, more efficient,
    etc. would be greatly appreciated.


  2. #2
    Tim Williams
    Guest

    Re: problem protecting word document by macro in excel

    What error do you get ?

    Tim.


    "natanz" <[email protected]> wrote in message
    news:[email protected]...
    >I keep a log of rfi's(requests for information) in excel. when i
    > answer them i open up a document from a template in word. i have been
    > working on automating this process. so far i have gotten to the point
    > where i can open a document in word, unprotect it, change some of it's
    > formfields and bookmarks. but now i am trying to reprotect it. So
    > here's my code:
    >
    > Sub OpenTemplate(DocType As String) 'in this case it is "RFI Response"
    >
    > Dim WordApp As Object
    > Set WordApp = Nothing
    > Dim worddoc As Object
    > Dim TemplateFile As String
    > Dim TemplateDir As String
    >
    > 'is this code doing what i want it to do, namely checking if there
    > is an open copy of MS
    > 'word
    > On Error Resume Next
    > Set WordApp = GetObject("word.application")
    > If Err.Number <> 0 Then
    > Set WordApp = CreateObject("word.application")
    > End If
    > TemplateDir = "C:\Documents and Settings\My Documents\forms\"
    > TemplateFile = TemplateDir & DocType & ".dot"
    > WordApp.Documents.Add Template:=TemplateFile
    > Set worddoc = WordApp.activedocument
    >
    > If DocType = "rfi response" Then
    > Call RFIInfo(worddoc)
    > End If
    >
    > WordApp.Visible = True
    > End Sub
    >
    >
    > and then:
    >
    > Public Sub RFIInfo(worddoc As Object)
    > worddoc.Unprotect
    > worddoc.Bookmarks("projname").Range.Text = _
    > ActiveWorkbook.Sheets("project info").Range("a7")
    > worddoc.Bookmarks("projnum").Range.Text = _
    > "FILE: " & ActiveWorkbook.Sheets("project
    > info").Range("b7")
    > With worddoc.FormFields("dropdown1").DropDown.ListEntries
    > .Add ("september")
    > .Add ("marching orders")
    > .Add ("Mr. Humboldt")
    > End With
    >
    > 'everything works exactly as i need until this last line:
    > worddoc.Protect Type:=wdAllowOnlyFormFields, noreset:=True
    > End Sub
    >
    > so i think i may be doing a couple things wrong. I don't think i am
    > checking for an open copy of word exactly right, in my on error resume
    > next, but it is working.
    > i am also not sure i am passing the object variable worddoc with enough
    > information. Is it a problem that the variable worddoc has the same
    > name in both subs? I feel like it is not the same thing after it is
    > passed, maybe i should have a ByRef in there? Anyway, i am an
    > intermediate newbie at this, just kind of fumbling my way through. Any
    > suggestions about ways to make my code better, cleaner, more efficient,
    > etc. would be greatly appreciated.
    >




  3. #3
    natanz
    Guest

    Re: problem protecting word document by macro in excel

    on the protection part, i actually don't get any error, but the ms word
    file does not change to a protected form either.

    the code above all works, i don't get any errors.


+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1