Word邮件合并生成带打开密码的PDF失败问题求助
解决Word邮件合并生成加密PDF的问题
问题原因
Word的SaveAs2方法中,Password参数仅对Word原生格式(如.docx)生效,保存PDF时该参数不会被识别,所以生成的PDF没有加密。要给PDF设置打开密码,需要使用ExportAsFixedFormat方法,该方法支持PDF加密的专用参数。
修改后的VBA代码
替换原代码中保存PDF的部分,改用ExportAsFixedFormat并指定OpenPassword参数:
Set singleDoc = ActiveDocument ' 标记邮件合并生成的当前文档为singleDoc ' 保存带密码的docx文档 singleDoc.SaveAs2 _ FileName:=masterDoc.MailMerge.DataSource.DataFields("DocFolderPath").Value & Application.PathSeparator & _ masterDoc.MailMerge.DataSource.DataFields("DocFileName").Value & ".docx", _ FileFormat:=wdFormatXMLDocument, _ Password:=masterDoc.MailMerge.DataSource.DataFields("FilePassword").Value ' 给docx设置打开密码 ' 保存带密码的PDF文档 singleDoc.ExportAsFixedFormat _ OutputFileName:=masterDoc.MailMerge.DataSource.DataFields("PdfFolderPath").Value & Application.PathSeparator & _ masterDoc.MailMerge.DataSource.DataFields("PdfFileName").Value & ".pdf", _ ExportFormat:=wdExportFormatPDF, _ OpenPassword:=masterDoc.MailMerge.DataSource.DataFields("FilePassword").Value ' 给PDF设置打开密码 singleDoc.Close False ' 关闭当前文档,准备处理下一条记录
关键说明
ExportAsFixedFormat是Word导出PDF/XPS的专用方法,支持OpenPassword(打开密码)和ModifyPassword(修改密码)两个参数,专门用于PDF加密。- 确保数据源中的
FilePassword字段值正确,密码会直接应用到生成的PDF文件上,打开时会要求输入密码。
内容的提问来源于stack exchange,提问作者Rama
相关产品推荐
相关产品推荐

