题:

如何使用VBA代码从Excel工作表中删除灰色的虚线分页符(不是蓝色的)?

背景:

我们有一个通过VBA生成的ODBC电子表格的集合。在本地框上运行两个不同(尽管相似)的电子表格时,没有手动更改Excel中的任何选项,一个在分页符上显示虚线的灰色线(请参见下图),一个没有。两者都足够大,可以延伸到一页以上。我无法在给出原因的代码中找到差异。

Internet上的大多数建议都通过GUI指向Excel中的选项,而不是选项。我正在寻找VBA解决方案。

我尝试过的

我尝试了DisplayPageBreaks = False的几种不同变体和应用。我使用不正确,或者设置不正确。我最合理地使用此属性是:

ActiveWorkbook.Worksheets(str_Worksheet_Name).DisplayPageBreaks = False

请注意,变量str_Worksheet_Name在代码的许多其他行中都起作用,例如:ActiveWorkbook.Worksheets(str_Worksheet_Name).Cells(1, 1).Select在所需的工作表上正确选择单元格A1

参考图片:

这些是我要删除的行:

excel - 在Excel VBA中,如何删除灰色分页符?-LMLPHP

提前致谢。



附加信息:


RE Mat的杯子的评论:


听起来好像这段代码片段阻止了它们出现在此电子表格中。请注意,此代码段来自正确不显示分页符的工作表:

Public Function cmlapi_Set_To_Landscape()

On Error Resume Next
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
    .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
    .LeftMargin = Application.InchesToPoints(0.75)
    .RightMargin = Application.InchesToPoints(0.75)
    .TopMargin = Application.InchesToPoints(1)
    .BottomMargin = Application.InchesToPoints(1)
    .HeaderMargin = Application.InchesToPoints(0.5)
    .FooterMargin = Application.InchesToPoints(0.5)
    .PrintHeadings = False
    .PrintGridlines = False
    .PrintComments = xlPrintNoComments
    .CenterHorizontally = False
    .CenterVertically = False
    .Orientation = xlLandscape
    .Draft = False
    .PaperSize = xlPaperLetter
    .FirstPageNumber = xlAutomatic
    .Order = xlDownThenOver
    .BlackAndWhite = False
    .Zoom = 100
End With
If glob_Header_On_Every_Page = True Then
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$" & HEADER_OFFSET
    End With
End If
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1

End Function



每个垫子的杯子的答复:

With ActiveSheet.PageSetup
    .Orientation = xlLandscape
    .FitToPagesTall = 1
    .FitToPagesWide = 1
End With



没有运气。线路仍然在那里。请注意,.Orientation = xlLandscape确实有效,因此不必担心在代码中指定的位置。


根据Vidyata的回答:


运行电子表格后,ActiveSheet.DisplayPageBreaks在电子表格的立即窗口(Ctrl + G)中起作用。重新运行会使虚线再次返回。奇怪的是,在代码中使用相同的属性似乎没有效果,但显然是正确的代码。也许它需要一个特定的地方?我会一直想,只要选择正确的工作表时使用ActiveSheet或指定工作表名称,都没关系。

还建议我在最后一行尝试。好主意,但也没有解决。在两个单独的试验的最后一行中对这两项进行了尝试:

ActiveWorkbook.Worksheets(str_Worksheet_Name).DisplayPageBreaks = False
ActiveSheet.DisplayPageBreaks = False


我尝试使用上面的PageSetup代码。那也没有做到。




解决方案:请参阅Mat的杯子的答案。在设置FitToPagesTall = 1之后,FitToPagesWide = 1Zoom = False也可以工作。我会羞愧地承认,我很惊讶我没有早点找到它,因为它在Microsoft Dev Network站点上的确切说明是这样的:

链接:MSDN Info

码:

 .Zoom = False
 .FitToPagesTall = 1
 .FitToPagesWide = 1


不知道为什么需要Zoom行,但是那是缺少的部分。

感谢所有的帮助!

最佳答案

尝试删除任何Zoom,然后缩放PageSetup以适合单个页面:

ActiveSheet.PageSetup.Zoom = False
ActiveSheet.PageSetup.FitToPagesTall = 1
ActiveSheet.PageSetup.FitToPagesWide = 1


那应该使虚线消失。

10-08 05:18