Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA使用Mailmerge字段中的密码将Word文档打印为PDF_Vba_Pdf_Passwords_Word_Mailmerge - Fatal编程技术网

VBA使用Mailmerge字段中的密码将Word文档打印为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_

我正在一个大型excel数据集上执行邮件合并练习。我需要将word文档中的PDF与个人密码合并—密码是excel文件中的一个字段

下面的代码要求提供批号和位置。我在excel文件中有与该批号匹配的某些行。我运行了下面的程序,并成功地打印了我输入的批次,但我不知道如何在PDF上设置个人密码。任何帮助都将不胜感激。我有一个PDF XChange程序,我通常会用它在一个单独的PDF上输入密码

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在