There are multiple flaws in your code. For starters, given that you're using atemplate, you should be using Documents.Add, not Documents.Open. Furthermore, you need to specify both the file type (should be docx) and file format. The path also needs to include the final '\' separator, if not already present. Thus:
Dim Wrd As Object, Doc As Document, varName As String
Set Wrd = CreateObject("Word.Application")
With Wrd
.Visible = True
Set Doc = .Documents.Add("F:\SeaGateBlue\Stories\MyStories\WrdWriteTemplate.dotm")
'Presumably some editing happens here, referencing 'Doc', not 'ActiveDocument', then:
Select Case InputBox("1 TO QUIT WORD " & vbCrLf & "2 TO SAVE THE ACTIVE DOC" & vbCrLf & "3 TO SAVE AND QUIT WORD", "PICK ONE")
Case 1
MsgBox "QUIT WORD"
Doc.Close False
.Quit
Case 2
MsgBox "SAVE ACTIVE DOC"
varName = Me.cboStoryStorePath & InputBox("ENTER THE NAME TO SAVE AS", "NAME THE STORY", "AAAstory") & ".docx"
Doc.SaveAs2 FileName:=varName, FileFormat:=wdFormatXMLDocument, AddToRecentFiles:=True
Case 3
MsgBox "SAVE AND QUIT WORD"
If InStr(Doc.FullName, Me.cboStoryStorePath) = 0 Then
varName = Me.cboStoryStorePath & "\" & InputBox("ENTER THE NAME TO SAVE AS", "NAME THE STORY", "AAAstory") & ".docx"
Doc.SaveAs2 FileName:=varName, FileFormat:=wdFormatXMLDocument, AddToRecentFiles:=True
ElseIf .Saved = False Then
.Save
End If
.Quit
Case Else
MsgBox "SOMETHING WRONG. SHOULD NOT GET HERE"
End Select
End With
Set Doc = Nothing: Set Wrd = Nothing
TRYING to use SaveAs2 to save a word doc that never has been saved before. I use FileName:= "F:\FolderOfWordDocs\FolderOfDocs\DocFileName.docm" seems should save and name the file. EVEN if that is not the default directory.
I use CreateObject to start Word 2016. Then open one of several templates. All works to this point.
Then try to save the new word document using SaveAs2 I get a RunTime error 5152 bad file name.
I based on all the documentation I can find I could just use FileName:= "Doc1.docm" if I was in the default directory but I am not.
All the documentation seems to imply I could use like this. FileName:= "F:\externalHardDrive\FolderOfWordDocs\Doc1.docm"
I have been unable to tell if that is too long or not permitted to include the hard drive letter.
or I must change the default directory or move to that directory. NOT all of the word docs are to go to the "F" drive or would be simple to change the save directory in word's backstage.
Dim strSaveCompletePath As String ' THIS TO HOLD BOTH FILENAME AND PATH TO STORE IT.
Dim WRD As Object
Set WRD = CreateObject("Word.Application")
Dim doc As Document
WRD.Visible = True
WRD.Documents.Open "F:\SeaGateBlue\Stories\MyStories\WrdWriteTemplate.dotm"
myCloseDoc = InputBox("1 TO QUIT WORD " & vbCrLf & "2 TO SAVE THE ACTIVE DOC" & vbCrLf & "3 TO SAVE AND QUIT WORD", "PICK ONE")
Select Case myCloseDoc
Case 1
MsgBox "QUIT WORD"
WRD.Quit
Case 2
MsgBox "SAVE ACTIVE DOC"
Dim varName As Variant
varName = InputBox("ENTER THE NAME TO SAVE AS", "NAME THE STORY", "AAAstory")
varName = varName & ".docm"
Debug.Print "CASE 2 varName is name to save as = " & varName
varName = Me.cboStoryStorePath & varName
varName = Replace(varName, Chr(34), "", 5, 1, vbTextCompare) ' SEEMS MUST HAVE TO GET RID OF THE DBL QUOTES AT END OFF THE PATH TO SAVE.
ActiveDocument.SaveAs2 FileName:=varName, AddToRecentFiles:=True
Case 3
MsgBox "SAVE AND QUIT WORD"
Case Else
MsgBox "SOMETHING WRONG. SHOULD NOT GET HERE"
End Select
Set WRD = Nothing
1 answer
Sort by: Most helpful
-
Paul Edstein 571 Reputation points
2022-06-11T22:45:52.423+00:00