You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Word 2007运行邮件合并导出PDF宏报Error 4608值超出范围如何解决

错误原因

  • Word 2007对Range对象的入参校验逻辑更严格,要求范围的起始位置必须≥1,不接受≤0的数值。你的原有代码中,如果邮件合并生成的目标文档本身只有1页,.GoTo(wdGoToPage, wdGoToLast).Start返回的起始位置为1,计算Lr - 1后得到0,传入Range方法就会触发4608值超出范围错误。高版本Word对起始位置为0的异常场景做了兼容处理,所以不会报错。
  • 另一种触发场景是部分记录生成的文档末尾本身没有多余空白内容,直接执行删除末尾范围操作也会触发边界越界错误。

修复方案

将原有删除空白页的代码块替换为如下兼容版本即可,该代码适配Word 2007及所有更高版本,同时不会影响原有功能逻辑:

原有代码段:

With TargetDoc
    Lr = .GoTo(wdGoToPage, wdGoToLast).Start
    .Range(Lr - 1, TargetDoc.Range.End).Delete
End With

替换为:

With TargetDoc
    Dim totalPage As Long
    totalPage = .ComputeStatistics(wdStatisticPages)
    ' 多页文档的空白页删除逻辑
    If totalPage > 1 Then
        Lr = .GoTo(wdGoToPage, wdGoToLast).Start
        ' 校验范围合法性后再执行删除
        If Lr > 1 Then
            .Range(Lr - 1, .Range.End).Delete
        End If
    Else
        ' 单页文档仅清理末尾多余的空白段落、分页符
        Dim lastPara As Range
        Set lastPara = .Paragraphs.Last.Range
        Do While lastPara.Text = Chr(13) Or lastPara.Text = Chr(12)
            lastPara.Delete
            Set lastPara = .Paragraphs.Last.Range
            ' 避免内容全为空时死循环,保留至少1个段落标记
            If .Paragraphs.Count = 1 Then Exit Do
        Loop
    End If
End With

内容的提问来源于stack exchange,提问作者Sonal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:45:10