View Single Post
 
Old 09-05-2010, 11:21 PM
jabberwocky12 jabberwocky12 is offline Windows 7 Office 2007
Novice
 
Join Date: Sep 2010
Posts: 2
jabberwocky12 is on a distinguished road
Default Word Macro: Save file as text with current file name

(My knowledge of VB is close to non-existent - I just want to record and run a macro)

Using MS-Word 2007.

I have about 100 files, named "1.doc", "2.doc", etc.
I need to edit them, and then convert them all to text files, using "File | Save As."

Using "1.doc" as my example, I record a macro, and go through the entire "File | Save As" process - merely changing the file type to text, and then the formatting, and saving it as "1.txt"

It works fine with this file, but, when I run the macro on "2.doc", it wants to save it ALSO as "1.txt", because the macro actually records the file name (not the key strokes). (See the macro below).

So, I need it to get the current file name, and save the file as CurrentFileName.txt.

I understand (I think) that the process I'm looking for is:

1. Define a CurrentFileName variable as a type string
2. Read the current file name into that CurrentFileName variable
3. Determine the length of CurrentFileName
4. Remove the last three chars from CurrentFileName (assuming that they are all .doc)
5. Add the chars "txt" to CurrentFileName
6. Then, in the macro below, instead of
ActiveDocument.SaveAs FileName:="1.txt"
write
ActiveDocument.SaveAs FileName:=CurrentFileName


Macro:
~~~~~~
----

Sub FileSaveClose()
'
' FileSaveClose Macro
'
'
ActiveDocument.SaveAs FileName:="1.txt", _
FileFormat:=wdFormatText, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, Encoding:=65001, InsertLineBreaks:= _
False, AllowSubstitutions:=False, LineEnding:=wdCRLF
ActiveWindow.Close
End Sub

-----

Please help with steps 1-5 above. (In your explanation, please treat me like a 5-year old - I promise I won't be offended :-)

Thanks in advance.
Reply With Quote