EXCEL VBA to Open Word, Edit and Saveas in the specified location.

两盒软妹~` 提交于 2020-06-26 07:37:35

问题


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:


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


来源:https://stackoverflow.com/questions/37536895/excel-vba-to-open-word-edit-and-saveas-in-the-specified-location

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!