• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2072
  • Last Modified:

Word 2010 - can I remove VBA code from a document to allow it to be saved as docx without warning

I have a small piece of VBA code stored in a template that runs at the document_new event.
After the document is created the user will get a warning when saving as a docx (the default AND REQUIRED setting) - because of the VBA code.

So is there a way to run the piece of code then automatically remove the VBA section from this new document so it can be saved as a plain docx?
0
AndyAinscow
Asked:
AndyAinscow
  • 4
  • 4
  • 2
1 Solution
 
Phillip BurtonDirector, Practice Manager and Computing ConsultantCommented:
Application.DisplayAlerts = wdAlertsNone
'~~> Your Save Code
Application.DisplayAlerts = wdAlertsAll
0
 
AndyAinscowAuthor Commented:
I think I understand what you are getting at.
I don't have any code run for the saving, it is the user performing the save by clicking save on the ribbon.  So I could turn alerts off at the end of the VBA code that runs on new doc, but how would I turn the alerts on again after the document is saved - the VBA section should not exist any more.
0
 
Phillip BurtonDirector, Practice Manager and Computing ConsultantCommented:
If you have some code in a Normal template in the document_new event, it shouldn't be copied into the new document.

If there are macros in the new document, then I don't think you can automatically disable the warning box - it's there for your protection.
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
AndyAinscowAuthor Commented:
This is in a custom template (not normal.dot) but another template used as the basis for the new document.
Private Sub Document_New()
    ActiveDocument.BuiltInDocumentProperties("Author") = GetLoginName()
End Sub

Function GetLoginName() As String
    'code here
End Function

Open in new window


When I create a new document then try to save it I get the following:
warningThat complains that a VBA code section still exists in the document.  Basically, that is what I want to get rid of so the end user can save as a docx without code.  The VBA section does exist, I can go to it via the developer tools:VBA ribbon options.
0
 
Phillip BurtonDirector, Practice Manager and Computing ConsultantCommented:
I have created a custom template based on the above code, created a document, and saved it as a docx. I have had no problems with saving it. The macros did not exist in the new document.

This is what is in my Template - Project - Microsoft Word Objects - ThisDocument:

Private Sub Document_New()
    ActiveDocument.BuiltInDocumentProperties("Author") = GetLoginName()
End Sub

Function GetLoginName() As String
    GetLoginName = "Hithere"
End Function

Open in new window


I would upload the file for you to test, but I am unable to upload dotm files.

Incidentally, thank you. I am developing a website based on metadata, and based on your previous question I am expanding it with a few additional pages - here's an example: http://www.filecats.co.uk/metadata-extended-document-properties/microsoft-office/accessing-within-ms-office-vba/
0
 
GrahamSkanRetiredCommented:
I am puzzled by this question. How does the code get into the document?

Code in a template is not automatically transferred to a new document if the document is created by selecting File/New and then selecting the template.
0
 
GrahamSkanRetiredCommented:
You might be able to upload the template if you change the extension to, say, .dot.
0
 
AndyAinscowAuthor Commented:
Aaaaaaagrh - I've just seen the 'template' isn't, for some reason word saved it as docm not dotm.
I'll get back later after really generating a template.
AndreaTest.txt
0
 
AndyAinscowAuthor Commented:
My fault.  That's a couple of hours time wasted.

I'd either copied the wrong document to the templates folder or selected the wrong file type to save as (docm rather than dotm) when generating the template.
Everything works, the VBA is not copied from the template to the new document.


ps. Ignore the attachment in the previous post, it is in reality a docm not a dotm extension - which is when I noticed something wasn't correct with the file extensions.
0
 
Phillip BurtonDirector, Practice Manager and Computing ConsultantCommented:
Yay! Glad it works.
0

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 4
  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now