Please Note: This article is written for users of the following Microsoft Word versions: 2007, 2010, 2013, and 2016. If you are using an earlier version (Word 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Word, click here: Saving in Document Format from a Macro.

Saving in Document Format from a Macro

by Allen Wyatt
(last updated September 16, 2021)

2

Anthony regularly imports multiple reports, in text files (i.e, filename.txt), into Word. He then uses macros to format this imported information. After the formatting macro is complete, Anthony manually uses "Save As" for each report to save it as a Word document. He is wondering what commands he should add to his macro to automate the last step of saving the data. Anthony would like to have the macro save the file using the same root name as the original text file, only changing it to Word format, as in filename.docx.

The steps to actually save the file are relatively easy. Consider the following code snippet, which saves a document in Word format:

ActiveDocument.SaveAs FileName:=sDocName, _
  FileFormat:=wdFormatDocument

The name of the file is stored in the sDocName variable, and the setting for the FileFormat property indicates that you want the document saved in the Word format. In an existing macro, the only thing left to do would be to set up sDocName with the filename that is desired.

Assuming that you have saved your original text file name into the variable sOrigName, you could use the following code to change the extension to .doc, and then save the file:

sDocName = Left(sOrigName, Len(sOrigName) - 4)
sDocName = sDocName & ".docx"
ActiveDocument.SaveAs FileName:=sDocName, _
  FileFormat:=wdFormatDocument

The code assumes that the last four characters of sOrigName contain the filename extension (the period plus three characters). These are stripped off and the ".docx" extension added. If you aren't sure how long the filename extension will be for the original file, you can rely on the Split function to pull it apart, if desired:

sNameParts = Split(sOrigName, ".")
sDocName = sNameParts(0) & ".docx"
ActiveDocument.SaveAs FileName:=sDocName, _
  FileFormat:=wdFormatDocument

To make this macro work, make sure you declare sNameParts as a string array.

Note:

If you would like to know how to use the macros described on this page (or on any other page on the WordTips sites), I've prepared a special page that includes helpful information. Click here to open that special page in a new browser tab.

WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (404) applies to Microsoft Word 2007, 2010, 2013, and 2016. You can find a version of this tip for the older menu interface of Word here: Saving in Document Format from a Macro.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Deleting an AutoText Building Block

At some point you may want to delete an AutoText entry you previously created. Here's the steps to follow.

Discover More

Counting Words

Do you need to know how many words are in a range of cells? Excel provides no intrinsic way to count the words, but you ...

Discover More

How Many Times Does Each Name Appear in a List?

If you have a list of names in a column, and you want to know how many times those names appear in a larger list of data, ...

Discover More

Create Custom Apps with VBA! Discover how to extend the capabilities of Office 2013 (Word, Excel, PowerPoint, Outlook, and Access) with VBA programming, using it for writing macros, automating Office applications, and creating custom applications. Check out Mastering VBA for Office 2013 today!

More WordTips (ribbon)

Determining the Day of the Month

When writing macros, you may need to know which day of the month a particular date represents. Here's how to use the Day ...

Discover More

Controlling the Bold Text Attribute

When processing a document in a macro, you may need to make some of your text bold. It's easy to do using the Bold ...

Discover More

Saving a Document in a Macro

If you develop a macro to process your document, you may want the macro to save the document to disk. This is easily done ...

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] (all 7 characters, in the sequence shown) in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is six more than 7?

2020-06-11 09:09:17

Vitaly

According to MSDN, you should use 'wdFormatDocumentDefault' instead of 'wdFormatDocument' when saving as .DOCX.


2017-11-25 09:37:57

V.S.Rawat

when I tried to do this by recording a macro,
I find that when I click file - saveAs,
it asked me to select folder, and when I selected current folder (named E:\work), it hardcoded the name there in the macro.

that is wrong method of microsoft.
There should be some method to save the file in the "current folder" with changed extension.

hardcoding anything kills the entire purpose.

if anyone knows the vba code to select "current folder" please share.

thanks.


This Site

Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.

Videos
Subscribe

FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.