Excelmacros:Application.Printcommunication = True(导致错误)

由于我对macros并不完全熟悉,因此我录制了一个macros,用于在Excel 2010中自动格式化报表,每周向人们发送报表。 部分macros调整页面设置属性,其中包括将布局更改为“横向”和“合法”大小。 我可以在我的电脑上正常运行它,因为我的打印机的默认尺寸是合法的。 但是,有些人在打印Legal Size纸张之前必须手动调整打印机,并且出现错误。 返回的错误是:运行时错误'1004':对象'_Application'的方法'PrintCommunication'失败

当我debugging时突出显示Application.Printcommunication = True行。 当我将代码更改为Application.PrintCommunication = False时,macros不会按照其构build方式完全格式化(例如,缩放保持100%)。 我认为一个解决方法可能是在运行macros之前将其默认打印机更改为Nitro Pro(类似于Adobe Pro),但错误仍然存​​在。 任何反馈非常感谢!

Sub Auto_Open() ' ' Macro2 Macro ' ' Application.PrintCommunication = False With ActiveSheet.PageSetup .PrintTitleRows = "$1:$1" .LeftMargin = Application.InchesToPoints(0.17) .RightMargin = Application.InchesToPoints(0.17) .TopMargin = Application.InchesToPoints(0.62) .BottomMargin = Application.InchesToPoints(0.48) .HeaderMargin = Application.InchesToPoints(0.17) .FooterMargin = Application.InchesToPoints(0.17) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 1200 .CenterHorizontally = True .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperLegal .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 60 .PrintErrors = xlPrintErrorsDisplayed .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = True End With Application.PrintCommunication = True With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("N2:O2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlTop .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = 0.599993896298105 .PatternTintAndShade = 0 End With Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("L1").Select Columns("B:B").ColumnWidth = 10.86 Columns("D:D").ColumnWidth = 18.86 Columns("E:E").ColumnWidth = 13.43 Columns("F:F").ColumnWidth = 11.29 Columns("F:F").ColumnWidth = 19.29 Columns("G:G").EntireColumn.AutoFit Range("H1").Select ActiveWindow.SmallScroll Down:=-33 Range("I1").Select Range("G1").Select Columns("H:H").ColumnWidth = 13 Columns("I:I").ColumnWidth = 18.71 Columns("J:J").ColumnWidth = 19.86 Columns("K:K").ColumnWidth = 13.57 Columns("L:L").ColumnWidth = 11 Columns("L:L").ColumnWidth = 11.43 Columns("M:M").ColumnWidth = 12.71 Columns("M:M").ColumnWidth = 15.86 Columns("N:N").ColumnWidth = 41.86 Columns("O:O").ColumnWidth = 18.57 Columns("O:O").ColumnWidth = 28.86 Columns("O:O").ColumnWidth = 42 Columns("L:L").ColumnWidth = 12.71 Range("K2:L2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.NumberFormat = "$#,##0" ActiveWindow.SmallScroll Down:=-30 Columns("A:A").Select Selection.EntireColumn.Hidden = True Rows("1:1000").EntireRow.AutoFit Range("B1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone ActiveWindow.Zoom = 75 With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Range("E2").Select ActiveWindow.SmallScroll Down:=-6 ActiveWindow.LargeScroll ToRight:=-1 With ActiveWindow .SplitColumn = 0 .SplitRow = 1 End With ActiveWindow.FreezePanes = True With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "&""-,Bold""&12Weekly Staffing Summary Request &D" .RightHeader = "" .LeftFooter = "&D" .CenterFooter = "&P" .RightFooter = "&F" End With End Sub 

从logging的macros中拉出的.PrintQuality = 1200行导致错误。 删除了该行,无论打印机工作,甚至使用Nitro PDF作为默认打印机。

显然有些迟到的回复,但今天我有同样的错误。 我的问题是,我的电脑无法联系默认打印机。

我改变它只有在计算机内部工作的PDF打印机,然后一切工作正常!

在顶部添加这一行,每一件事情都会很好:

 On Error Resume Next 

您可以使用“在错误恢复下一步”像这样:

 On Error Resume Next Application.PrintCommunication = False Err.Clear 

接着 :

 On Error Resume Next Application.PrintCommunication = True Err.Clear 

如果只想进行页面设置,则不必closuresPrintCommunication。 但是在执行时间中可以看出差异:closures打印机通信时执行速度更快。

我有Excel 2010,有时PrintCommunication工作正常,有时不。 直到现在,我还没弄明白为什么!