VBA使用Mailmerge字段中的密码将Word文档打印为PDF
我正在一个大型excel数据集上执行邮件合并练习。我需要将word文档中的PDF与个人密码合并—密码是excel文件中的一个字段 下面的代码要求提供批号和位置。我在excel文件中有与该批号匹配的某些行。我运行了下面的程序,并成功地打印了我输入的批次,但我不知道如何在PDF上设置个人密码。任何帮助都将不胜感激。我有一个PDF XChange程序,我通常会用它在一个单独的PDF上输入密码VBA使用Mailmerge字段中的密码将Word文档打印为PDF,vba,pdf,passwords,word,mailmerge,Vba,Pdf,Passwords,Word,Mailmerge,我正在一个大型excel数据集上执行邮件合并练习。我需要将word文档中的PDF与个人密码合并—密码是excel文件中的一个字段 下面的代码要求提供批号和位置。我在excel文件中有与该批号匹配的某些行。我运行了下面的程序,并成功地打印了我输入的批次,但我不知道如何在PDF上设置个人密码。任何帮助都将不胜感激。我有一个PDF XChange程序,我通常会用它在一个单独的PDF上输入密码 Sub Merge_To_Individual_PDF() ' ' Merge_To_Individual_
Sub Merge_To_Individual_PDF()
'
' Merge_To_Individual_PDF Macro
'
'
Application.ScreenUpdating = True
Dim StrFolder As String, StrName As String, MainDoc As Document, TargetDoc As Document, i As Long, j As Long, K As String, Newfolder As String, MyFolder As String, L As Long
Const StrNoChr As String = """*./\:?|"
Set MainDoc = ActiveDocument
K = "Errors"
'Batch to Print
myValue = InputBox("Batch Number")
If StrPtr(myValue) = 0 Then Exit Sub
If myValue = "" Then Exit Sub
If TypeName(myValue) = "Boolean" Then Exit Sub
MyFolder = InputBox("Copy Paste Local File Location Here")
With MainDoc
'Folder name
If MyFolder = "" Then
StrFolder = "C:\Users\Mathun\test\"
Else: StrFolder = MyFolder & "\"
End If
L = 0
Application.StatusBar = L
With .MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
On Error Resume Next
For i = 1 To .DataSource.RecordCount
With .DataSource
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
If Trim(.DataFields("Pack_Ref")) = "" Then Exit For
StrName = .DataFields("Pack_Ref")
'Only print this batch
If .DataFields("BatchNumber") <> myValue Then GoTo NextRecord
End With
.Execute Pause:=False
If Err.Number = 5631 Then
Err.Clear
K = K & StrName
GoTo NextRecord
End If
Newfolder = StrFolder & myValue
MkDir Newfolder
StrName = Trim(StrName)
With ActiveDocument
Selection.WholeStory
ActiveDocument.Fields.ToggleShowCodes
Selection.Fields.Update
', Password:=StrName
ActiveDocument.SaveAs2 FileName:=StrFolder & myValue & "\" & StrName & ".docx", FileFormat:=wdFormatXMLDocument, AddToRecentFiles:=False
.Close
L = L + 1
'and/or:
ActiveDocument.SaveAs2 FileName:=StrFolder & myValue & "\" & StrName & ".pdf", FileFormat:=wdFormatPDF, AddToRecentFiles:=False
.Close SaveChanges:=False
End With
NextRecord:
Next i
End With
End With
Application.ScreenUpdating = True
End Sub
Sub Merge_To_Individual_PDF()
'
'将\u合并到\u单个\u PDF宏
'
'
Application.ScreenUpdating=True
Dim StrFolder作为字符串,StrName作为字符串,MainDoc作为文档,TargetDoc作为文档,i作为长,j作为长,K作为字符串,Newfolder作为字符串,MyFolder作为字符串,L作为长
Const StrNoChr As String=“”*。/\:?|”
设置MainDoc=ActiveDocument
K=“错误”
“批量打印”
myValue=输入框(“批号”)
如果strprtr(myValue)=0,则退出子系统
如果myValue=“”,则退出Sub
如果TypeName(myValue)=“Boolean”,则退出Sub
MyFolder=InputBox(“复制粘贴本地文件位置在此”)
与MainDoc
'文件夹名称
如果MyFolder=”“,则
StrFolder=“C:\Users\Mathun\test\”
其他:StrFolder=MyFolder&“\”
如果结束
L=0
Application.StatusBar=L
使用.MailMerge
.Destination=wdSendToNewDocument
.suppress blanklines=True
出错时继续下一步
对于i=1到.DataSource.RecordCount
使用.DataSource
.FirstRecord=i
.LastRecord=i
.ActiveRecord=i
如果Trim(.DataFields(“Pack_Ref”)=“”则退出
StrName=.DataFields(“Pack\u Ref”)
'仅打印此批次
如果.DataFields(“BatchNumber”)为myValue,则转到下一条记录
以
.执行暂停:=False
如果错误编号=5631,则
呃,明白了
K=K&StrName
转到下一条记录
如果结束
Newfolder=StrFolder&myValue
MkDir新文件夹
StrName=修剪(StrName)
使用ActiveDocument
健康的选择
ActiveDocument.Fields.ToggleShowCodes
Selection.Fields.Update
,密码:=StrName
ActiveDocument.SaveAs2文件名:=StrFolder&myValue&“\”&StrName&“.docx”,文件格式:=wdFormatXMLDocument,AddToRecentFiles:=False
.结束
L=L+1
“和/或:
ActiveDocument.SaveAs2文件名:=StrFolder&myValue&“\”&StrName&“.pdf”,文件格式:=wdFormatPDF,AddToRecentFiles:=False
.Close SaveChanges:=False
以
下一条记录:
接下来我
以
以
Application.ScreenUpdating=True
端接头
尝试将“word vba导出为带密码的pdf”放入您喜爱的搜索中engine@TimothyRylatt我已经试过了,这似乎是一个很常见的问题,没有明显的解决办法,所以我想我可以试试这个社区。谢谢你的建议!事情并没有改变,所以您唯一的选择仍然是使用第三方工具。因此,您可以研究自动化PDF交换,或者尝试通过谷歌或必应找到的解决方案之一,例如Graham Mayor关于尝试将“word vba导出到PDF密码”放入您喜爱的搜索中的回答engine@TimothyRylatt我已经试过上面的方法了,这似乎是一个非常常见的问题,没有明显的解决方案,所以我想我可以尝试一下这个社区。谢谢你的建议!事情并没有改变,所以您唯一的选择仍然是使用第三方工具。因此,您可以研究PDF Exchange的自动化,或者尝试通过谷歌或必应找到的解决方案之一,例如Graham Mayor在