2
votes

Am trying to Open the Word application, Edit, Saveas in the specified location and Need to check whether user has entered the correct Filename. Here's my code

Dim Doc
Dim DocPath
Dim DocObj
Dim VarResult

DocPath = "C:\MyFolder\MyDocument.doc"    
Set DocObj = CreateObject("word.Application")
Doc = DocObj.Documents.Open(DocPath)
DocObj.Visible = True

After opening the document I am doing some changes

With Doc.ActiveDocument
Set myRange = .Content
With myRange.Find
.Execute FindText:="FindText", ReplaceWith:="ReplaceText", Replace:=2
End With
End With

Now, I have an issue in saveas the file. I used both the alternative methods, 1: GetSaveAsFilename, 2: SaveAs. I need the saveas dialog box to appear(with all DefaultLocation, InitialFilename, DocumentType, Title properties). User needs to select and the same needed to be validated, whether user has not given Cancel button.

varResult = Doc.GetSaveAsFilename( _
FileFilter:="DP Document (*.doc), *.doc, DP Document (*.docx), *.docx", Title:="Save DP", initialvalue:="InitialDocument")
If varResult <> False Then
MsgBox "File choosen = " & varResult
Else
MsgBox "Please select the file"
End If

Am getting Run-time error. Thanks in advance.

1

1 Answers

0
votes

According to this Microsoft Article, "If you use the CreateObject function with an object of type Word.Application or Word.Basic, the function fails if Word is already running." The failure is indicated by a Run-Time error. Microsoft suggests that you "check to see whether Word is already running. If it is not, start a new instance of Word." For example, you could use "the GetObject function to create a Word.Application object. If the GetObject function fails, Word is not running, so the CreateObject function is then used to set the Word.Application object." The code provided in the linked article is as follows:

Sub RunWord()

   Dim wObj As Word.Application
   On Error Resume Next

   ' Get existing instance of Word if it exists.
   Set wObj = GetObject(, "Word.Application")

   If Err <> 0 Then
      ' If GetObject fails, then use CreateObject instead.
      Set wObj = CreateObject("Word.Application")
   End If

   ' Add a new document.
   wObj.Documents.Add

   ' Exit Word.
   wObj.Quit

   ' Clear object memory.
   Set wObj = Nothing

End Sub