Word Macro for saving word form with variable Name

Anonymous
2019-12-05T15:32:55+00:00

Hi,

I have been reading a post within this forum Here and have found that I can now create a saved word doc from a command button within a word form I have created. 

I have been saving the files as text files which I assume is because the code I am using shows as strFileName = .Text

I was hoping that to save the files as word docs all I would need to do is change this to .doc but that doesn't seem to work. 

Also I need to change the variable so that it creates a date and time that is added to the form I am using

The code I am currently using is the same from the previous reply on the above question

Private Sub CommandButton1_Click()

Dim rngFilename As Range

 Dim strFileName As String

 Set rngFilename = ActiveDocument.Range

 With rngFilename

     .End = .Start

     .MoveEnd wdWord, 4

     strFileName = .Text

 End With

 ActiveDocument.SaveAs "shared drive location\ " & strFileName

End Sub

From what I gather the 4 at the end of .MoveEnd wdWord 4 is the start of the file name but what if I need it to be further on down the form for example two words together on separate lines of the form, (e.g. word 13 and word 9) when I try to do this using the code above I am getting the following error

Runtime error 5096

Can someone help me with the code so that I can save the form as a word doc and save it automatically as the answers within the form?

Thanks

Mark

Microsoft 365 and Office | Word | For home | Windows

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments
Answer accepted by question author
Jay Freedman 208.6K Reputation points Volunteer Moderator
2019-12-17T15:00:07+00:00

The important part is exactly where and how your user saved the template. Microsoft Office is strict about security because hackers love to attack you with malware, so users have to jump through a few hoops to make macros work. 

First, any Office file sent from one computer to another is marked by Windows and has to be manually unmarked. After saving the file on the local drive, open its Properties dialog from the right-click menu and check the Unblock box. 

The second requirement is to satisfy or bypass Office's security checks. To satisfy them, a security certificate has to be applied to the file, something that isn't available to most people. To bypass the checks, the template file must be stored in a 'trusted location', a folder that is designated as one where all the files are known to be good. By default, the Office installer marks the User Templates, the Program Templates, and the Word Startup folders as trusted. This can be seen in File > Options > Trust Center > Trust Options > Trusted Locations. If the template wasn't initially saved in the Templates folder, it should be moved there before basing a document on it.

Was this answer helpful?

4 people found this answer helpful.
0 comments No comments
Answer accepted by question author
Charles Kenyon 172K Reputation points Volunteer Moderator
2019-12-18T17:43:45+00:00

I believe there is information about (1) requiring information and (2) reloading the information from the form into the UserForm on one of these if not both:

I'm on my way out the door. If these don't help and no one else supplies how to do this, I will follow up when I return.

Was this answer helpful?

1 person found this answer helpful.
0 comments No comments

16 additional answers

Sort by: Most helpful
  1. Anonymous
    2019-12-19T09:25:21+00:00

    Hi Jay,

    the code I am using is as follows:

    Private Sub CommandButton1_Click()

        Dim strFileName As String

        Dim strDate As String

        Dim tbl As Table

        Set tbl = ActiveDocument.Tables(1)  ' change the 1 if necessary

        ' test for failure to select Machine number date or technician name

        If tbl.Cell(Row:=3, Column:=2).Range.ContentControls(1).ShowingPlaceholderText Then

            MsgBox prompt:="Please Enter Machine Number", Title:="Oops!"

     End If

        If tbl.Cell(Row:=4, Column:=2).Range.ContentControls(1).ShowingPlaceholderText Then

             MsgBox prompt:="Please select date", Title:="Oops!"

     End If

    If tbl.Cell(Row:=6, Column:=2).Range.ContentControls(1).ShowingPlaceholderText Then

            MsgBox prompt:="Please select technician name", Title:="Oops!"

    End If

      ' start with machine number

     strFileName = tbl.Cell(Row:=3, Column:=2).Range.ContentControls(1).Range.Text

      ' reformat the date (change order of month & day if needed)

       strDate = Format(expression:=tbl.Cell(Row:=4, Column:=2).Range.ContentControls(1).Range.Text, _

        Format:="yyyy.MM.dd")

      ' combine the parts

       strFileName = strFileName & "." & strDate & ".docx"

        ' save

        ActiveDocument.SaveAs FileName:="SharedPathName" & strFileName, _

        FileFormat:=wdFormatDocumentDefault

    ActiveDocument.Close

    End Sub

    I have added "ActiveDocument.Close at the end and this seems to work re closing upon submitting the form however its also closing whether the details are added or not.

    The code seems to be picking up the wording for the rows before the user is entering any detail (see below)

    When the submit is clicked the messages do appear (oops please enter technicians name etc) then its saved as

    Clickheretoentertext.clickheretoenterdate

    so its pretty clear its picking up the wording from the rows (correctly) should I just not include the content control? I thought this would cause issues with the code?

    Thanks

    Mark

    Was this answer helpful?

    0 comments No comments
  2. Anonymous
    2019-12-18T08:35:27+00:00

    Thanks once again that's great I have managed to save the template in the templates folder on my machine and it now works properly

    one last question re the coding and I’ll let you all enjoy Christmas shopping etc.

    When the user clicks submit without the fields completed a file is saved regardless (its showing as something like "type date here") I guess that even without the detail, because the code saves the file it is using whatever is in the field regardless. Is there any way to stop the saving if any of the fields haven't been added to?

    Also instead of having to close the form after submitting is there a way to close it on submission and protecting it so that its un editable on re opening later on once saved initially?

    Thanks

    Mark

    Was this answer helpful?

    0 comments No comments
  3. Anonymous
    2019-12-12T09:07:56+00:00

    Hi

    Excuse my stupidity here but what do you mean when you say:

    you must have the code in another location, possibly in your Normal.dotm template.

    Is that another version of the form saved somewhere else and the template saved off the back of it?

    Was this answer helpful?

    0 comments No comments