【问题标题】:Simulate click on SAVE button模拟点击保存按钮
【发布时间】:2026-01-17 12:00:01
【问题描述】:

我运行一个创建 PDF 文件的 vba 子例程 - 一切正常,我现在唯一的问题是我不希望用户必须单击保存按钮并希望在 VBA 中模拟它。我的代码如下"

Fname = Application.GetSaveAsFilename(ws.Name & "_" & Range("M21") & "_" & _
            VBA.Strings.Format(Now, "ddmmyy"), filefilter:=FileFormatstr, _
            Title:="Create PDF")

不确定我需要在什么地方添加代码来强制保存

任何帮助将不胜感激。

【问题讨论】:

  • 为什么要模拟点击?直接在代码中保存为pdf即可。
  • 嗨,因为我给个人和批量发送电子邮件 - 所以个人我希望他们点击保存,但批量必须保存并移至下一封电子邮件 - 希望有意义
  • 那么你的代码知道这是否是一个批处理吗?如果是,请在代码中使用条件来使用 SaveAs,或者不使用。以同样的方式决定代码是否应该单击按钮
  • 所以如果我得到这个正确,我需要做的就是将我的代码更改为 Fname = Application.SaveAsFilename(ws.Name & "" & Range("M21") & "" & _ VBA.Strings.Format(Now, "ddmmyy"), filefilter:=FileFormatstr, _ Title:="Create PDF")
  • 看看这些google.co.uk/…

标签: excel vba


【解决方案1】:

您拥有的代码使用 GetSaveAsFilename,这是它的 official document,如果您阅读文档中的第一行,它将说明功能是- 显示标准的另存为对话框并从用户那里获取文件名,而不实际保存任何文件。

但是您要做的是自动保存文件而不以 PDF 的形式显示对话框。因此,您需要使用 ExportAsFixedFormat 和这个是它的official document

所以,你可以使用这样的东西:-

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF FileName:="sales.pdf" Quality:=xlQualityStandard DisplayFileAfterPublish:=True

为了回答您的情况,您需要在程序中使用 if else 循环来在两种情况之间切换。

【讨论】:

    最近更新 更多