【问题标题】:Exporting .xlsx and .pdf where filename already exists导出文件名已存在的 .xlsx 和 .pdf
【发布时间】:2019-07-10 05:05:30
【问题描述】:

我需要一些在我的代码中无法获得的基本帮助。

同时保存为 .xlsx 和 PDF 文件,在同一位置,如果文件名已存在,则无法提示

Sub SaveAs()
Dim Path As String
Dim filename As String
Path = "C:\Users\yard\Dropbox\Modus\Purchase Orders\"
filename = Range("E4")
            Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs filename:=Path & filename & ".xls", FileFormat:=xlOpenXMLWorkbook

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=Path & filename & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

End Sub

或者我是否使用 Application.DisplayAlerts = False 取消了它?

我不想在保存 excel 文件时收到有关启用宏的工作簿的提示,但是我希望它提示文件名是否已存在。

【问题讨论】:

  • Bone ... 如果此代码未在 Excel 加载项中使用,则很有可能您打算使用 ThisWorkbook 而不是 ActiveWorkbook。请注意,ThisWorkbook 是运行此代码的工作簿,而 ActiveWorkbook 是具有焦点的工作簿(位于顶部)。虽然ThisWorkbook 非常可靠,但ActiveWorkbook 可以通过用户点击轻松更改。所以要小心,不要把它们混在一起。
  • 嗯,你去吧,你可能知道我刚刚通过一些谷歌搜索(特别是这个页面)和记录我自己的宏将这些拼凑在一起。谢谢!

标签: excel vba


【解决方案1】:

查看代码中添加了 If 条件的行:

Dim Path As String
Dim filename As String

Path = "C:\Users\yard\Dropbox\Modus\Purchase Orders\"

filename = Range("E4")

    Application.DisplayAlerts = False

    If Not Len(dir(Path & filename & ".xls")) = 0 Then MsgBox "Xls File Already Exist"
    ActiveWorkbook.SaveAs filename:=Path & filename & ".xls", FileFormat:=xlOpenXMLWorkbook

    If Not Len(dir(Path & filename & ".pdf")) = 0 Then MsgBox "PDF File Already Exist"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=Path & filename & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    Application.DisplayAlerts = True

End Sub

您可以使用Dir 来检查文件是否存在

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2015-12-19
  • 2023-04-09
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多