Word宏错误 - 运行时错误4608,值超出范围

时间:2016-03-21 23:09:16

标签: vb.net vba ms-word macros

我们运行的宏用于格式化发布商的页面。有几个文档使用此宏。对于较小的文档,宏运行时没有错误,对于较大的文档,我们在该主题的主题行中收到错误。

小文档 - < = 256KB

大型文档 - > = 500KB

对于有错误的文档,我可以在Word中打开它们并手动进行设置。

这是宏的第二个版本

Function pagestuffB() As String
'
' Format for Publisher
'
'
Dim rv As String
rv = ""
On Error GoTo ErrorHndlr:
    With Application
        .Options.Pagination = False
        .ScreenUpdating = False
        With .ActiveDocument.PageSetup
            .PaperSize = wdPaperLetter
'            .PageWidth = InchesToPoints(8.5)
'            .PageHeight = InchesToPoints(11)
            .Orientation = wdOrientPortrait
            .MirrorMargins = True 'ERROR HERE
            .TopMargin = InchesToPoints(1.34)
            .HeaderDistance = InchesToPoints(0.98)
            .BottomMargin = InchesToPoints(1)
            .FooterDistance = InchesToPoints(0.8)
            .LeftMargin = InchesToPoints(1.61)
            .RightMargin = InchesToPoints(1.4)
            .Gutter = InchesToPoints(0)
            .SectionStart = wdSectionContinuous
            .OddAndEvenPagesHeaderFooter = True
            .DifferentFirstPageHeaderFooter = True
            .LineNumbering.Active = False

            .FirstPageTray = wdPrinterDefaultBin
            .OtherPagesTray = wdPrinterDefaultBin
            .VerticalAlignment = wdAlignVerticalTop
            .SuppressEndnotes = False
            .TwoPagesOnOne = False
            .BookFoldPrinting = False
            .BookFoldRevPrinting = False
            .BookFoldPrintingSheets = 1
            .GutterPos = wdGutterPosLeft
        End With
    End With
    pagestuffB = rv
Exit Function

ErrorHndlr:
    If rv = "" Then
        rv = "Macro error " & Err.Number
        Select Case Err.Number
            Case Else
        End Select
    End If

    Resume Next
End Function

版本信息:Word 2010,VS 2012。

我的文件失败了,如果需要,我会提供。

编辑:文档为here

这是实际运行的宏的最新版本,但是......在上面的链接中格式化两个文档(两个最小的文档)需要0.5个小时。

Function pagestuffB() As String
'
' Format for Publisher
'
'
Dim rv As String
rv = ""
On Error GoTo ErrorHndlr:
    With Application
        .Options.Pagination = False
        .ScreenUpdating = False
        .WindowState = wdWindowStateMinimize
    End With
    Dim oSec As Section
    For Each oSec In Selection.Sections
        With oSec.PageSetup
            .Orientation = wdOrientPortrait 'moved per macropod
            .PaperSize = wdPaperLetter
            .MirrorMargins = True
            .TopMargin = InchesToPoints(1.34)
            .HeaderDistance = InchesToPoints(0.98)
            .BottomMargin = InchesToPoints(1)
            .FooterDistance = InchesToPoints(0.8)
            .LeftMargin = InchesToPoints(1.61)
            .RightMargin = InchesToPoints(1.4)
            .Gutter = InchesToPoints(0)
            .SectionStart = wdSectionContinuous
            .OddAndEvenPagesHeaderFooter = True
            .DifferentFirstPageHeaderFooter = True

            .LineNumbering.Active = False
            .FirstPageTray = wdPrinterDefaultBin
            .OtherPagesTray = wdPrinterDefaultBin
            .VerticalAlignment = wdAlignVerticalTop
            .SuppressEndnotes = False
            .TwoPagesOnOne = False
            .BookFoldPrinting = False
            .BookFoldRevPrinting = False
            .BookFoldPrintingSheets = 1
            .GutterPos = wdGutterPosLeft
        End With
    Next oSec

    pagestuffB = rv
Exit Function

ErrorHndlr:
    If rv = "" Then
        rv = "Macro error " & Err.Number
        Select Case Err.Number
            Case Else
        End Select
    End If

    Resume Next
End Function

1 个答案:

答案 0 :(得分:1)

所以我删除了这三行代码,宏在我的计算机上很快就能完成这两个文件。您似乎使用录制的宏来构建此代码。由于没有描述代码所做的评论,因此很难理解你希望这段代码到底是什么。如果此建议无法解决您的问题,请在下方发表评论。

.BookFoldPrinting = False
.BookFoldRevPrinting = False
.BookFoldPrintingSheets = 1