Solved

How to save a copy of Word document with VBA

Posted on 2009-07-13
3
611 Views
Last Modified: 2013-11-27
The steps for the VBA code are currently

1. Get the current word document as object
2. Save the document in a special folder
3. Give this path to a database so that the database can upload the file.
4. Ultimately delete the copy.

I am just using "myDoc.SaveAs CurrentProject.Path & "\Temp\" & str_Save_Name & ".rtf", wdFormatRTF"

At the end of this procedure the currently open document then has this path as its saved path, maybe the user had it saved somewhere else.

What should I do here?
Can I somehow take a copy of an open Word doc and save that without intefereing with the current document?
Or can I reliably just get the current path of the word document (without saving it at all) and use that path to upload?
0
Comment
Question by:darbid73
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 12

Accepted Solution

by:
geneus earned 500 total points
ID: 24846845
Below is some Standard Code that I use to make a Copy of a Document in the Current Directory in order to modify the copied document and keep the original intact.

To get the Current Path of a Document:
MsgBox ActiveDocument.Path

To get the Full Document Name and Path:
MsgBox ActiveDocument.Path & Application.PathSeparator & _
    ActiveDocument.Name
'**************************************************************************************************
'*Step #1:  Preserve original document by making a copy of the document and working with the copy.*
'**************************************************************************************************
 
'Get the Current Document name
varOriginalDoc = ActiveDocument.Name
 
'Set the New Document Name
 
If Right(varOriginalDoc, 4) = ".doc" Then
varStringSelection = Len(varOriginalDoc) - 4
varNewDoc = Left(varOriginalDoc, varStringSelection) & "_Copy.doc"
ElseIf Right(varOriginalDoc, 4) = "docx" Then
varStringSelection = Len(varOriginalDoc) - 5
varNewDoc = Left(varOriginalDoc, varStringSelection) & "_Copy.docx"
End If
 
'Create and Save the new Document copy
Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
 
ActiveDocument.SaveAs FileName:=varNewDoc, FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
        
'Switch to the Original Document
Documents(varOriginalDoc).Activate
 
'Select the entire Document and Copy the Contents
Selection.HomeKey Unit:=wdStory
Selection.WholeStory
Selection.Copy
 
ActiveDocument.Close
 
'Switch to the new Document
Documents(varNewDoc).Activate

Open in new window

0
 
LVL 20

Author Comment

by:darbid73
ID: 24847133
Hey thanks for the great code - One thing I am concerned about is that the OriginalDoc could have any type of things on it, tables, pictures, special formating really anything.

In your experience is a Selection.Copy and I imagine (but you did not put it in the code) a Selection.Paste reliable?

I am not that experienced in Word - so please excuse the dumb what if questions - but your new document will be based on Normal.dot - what if they used another template for the original document, will a copy and paste work ok here?
0
 
LVL 20

Author Comment

by:darbid73
ID: 24847832
testing does not seem to show any problems with the copy/paste method.

Thanks
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Preparing an email is something we should all take special care with – especially when the email is for somebody you may not know very well. The pressures of everyday working life stacked with a hectic office environment can make this a real challen…
In Microsoft Access, learn different ways of passing a string value within a string argument. Also learn what a “Type Mis-match” error is about.
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question