保存时提示替换文件

时间:2017-06-03 08:47:57

标签: excel vba excel-vba ms-word

以下是我尝试做的事情 -

  1. 从现有工作簿复制数据并将其作为文本粘贴到本地驱动器上保存的现有word文件
  2. 使用预定义文本+在Excel文件+今天的日期
  3. 中定义的值保存该文件
  4. 一切正常但只有我面临的问题是,如果文件名已经存在,我希望它给我一个提示,这样我就可以做出明智的决定是否用现有文件替换它。但它并没有做到这一点。它只是覆盖现有的。
  5. 代码

    Sub GenerateLabelandInvoice()
        'Open an existing Word Document from Excel
        Dim objWord As Object
    
        Set objWord = CreateObject("Word.Application")
    
        objWord.Visible = True
        objWord.Application.DisplayAlerts = True
        objWord.Documents.Open "D:\path name \ file name.docx"
        Range("L19:L29").Copy
        With objWord
            .Selection.PasteSpecial DataType:=wdPasteText
    
            objWord.ActiveDocument.SaveAs Filename:="D:\path name\" & _
            "Address Label & Invoice - " & Range("L23").Value & " " & _
            Format(Date, "dd-mmm-yyyy") & ".docx", _
            FileFormat:=wdFormatXMLDocument, AddtoRecentFiles:=False
    
            objWord.Visible = True
            objWord.Application.DisplayAlerts = True
        End With
    End Sub
    

1 个答案:

答案 0 :(得分:1)

将文件名保存在变量中,然后使用DIR测试文件是否存在。

这是你在尝试什么? (的未测试

Dim NewFileName As String
Dim Ret As Variant

NewFileName = "D:\path name\" & "Address Label & Invoice - " & _
              Range("L23").Value & " " & _
              Format(Date, "dd-mmm-yyyy") & ".docx"

If Dir(NewFileName) <> "" Then
    Ret = MsgBox("File exists. Would you like to replace", vbOKCancel)

    If Ret = vbOK Then
        objWord.ActiveDocument.SaveAs Filename:=NewFileName, _
        FileFormat:=wdFormatXMLDocument, AddtoRecentFiles:=False
    End If
Else
    objWord.ActiveDocument.SaveAs Filename:=NewFileName, _
    FileFormat:=wdFormatXMLDocument, AddtoRecentFiles:=False
End If