Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 从邮件合并保存单个文档时出错_Vba_Ms Word_Mailmerge - Fatal编程技术网

Vba 从邮件合并保存单个文档时出错

Vba 从邮件合并保存单个文档时出错,vba,ms-word,mailmerge,Vba,Ms Word,Mailmerge,我一直在使用VBA代码将邮件合并中的所有信件单独保存到指定文件夹中。它以前一直有效,但是我现在尝试这样做,它只是保存第一个文档,然后出现一个错误,说明: 已删除运行时错误“5825”对象 当我去调试时,它突出显示底部附近的一行,读“DocResult.Close False” 我怎样才能解决这个问题 尝试将此更改为True或完全删除行,但无法解决问题。每个文档都相当大,因此需要大约30秒才能保存 Dim WithEvents wdapp As Application Dim bCustomPro

我一直在使用VBA代码将邮件合并中的所有信件单独保存到指定文件夹中。它以前一直有效,但是我现在尝试这样做,它只是保存第一个文档,然后出现一个错误,说明:

已删除运行时错误“5825”对象

当我去调试时,它突出显示底部附近的一行,读“DocResult.Close False”

我怎样才能解决这个问题

尝试将此更改为True或完全删除行,但无法解决问题。每个文档都相当大,因此需要大约30秒才能保存

Dim WithEvents wdapp As Application
Dim bCustomProcessing As Boolean

Private Sub Document_Open()

Set wdapp = Application
bCustomProcessing = False
ThisDocument.MailMerge.DataSource.ActiveRecord = 1
ThisDocument.MailMerge.ShowWizard 1
With ActiveDocument.MailMerge
   If .MainDocumentType = wdFormLetters Then
       .ShowSendToCustom = "Custom Letter Processing"
   End If
End With

End Sub
Private Sub wdapp_MailMergeWizardSendToCustom(ByVal Doc As Document)

bCustomProcessing = True
Doc.MailMerge.Destination = wdSendToNewDocument
With Doc.MailMerge
    For rec = 1 To .DataSource.RecordCount
        .DataSource.ActiveRecord = rec
        .DataSource.FirstRecord = rec
        .DataSource.LastRecord = rec
        .Execute
    Next
End With

MsgBox "Merge Finished"
End Sub


Private Sub wdapp_MailMergeAfterMerge(ByVal Doc As Document, ByVal DocResult As Document)
If bCustomProcessing = True Then
    With Doc.MailMerge.DataSource.DataFields
        sFirmFileName = .Item(44).Value ' First Column of the data - CHANGE
    End With
    DocResult.SaveAs "xxx\" & sFirmFileName & ".doc", wdFormatDocument
     ' Path and File Name to save. can use other formats like wdFormatPDF too
    DocResult.Close False
End If
End Sub

您必须将对象设置为如下所示:


Set DocResult=nothing

您必须将对象设置为不包含以下内容:


Set DocResult=nothing

您是否尝试过
DocResult.Close
我尝试过,但不幸的是我遇到了相同的错误,我认为您必须这样做:
Set DocResult=nothing
并删除
DocResult.Close False
。我认为它应该可以工作,如果你尝试
DocResult.Close
我这样做了,但不幸的是我得到了同样的错误我认为你必须这样做:
设置DocResult=nothing
并删除
DocResult.Close False
。我觉得应该行得通