题:
如何使用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
。
参考图片:
这些是我要删除的行:
提前致谢。
附加信息:
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 = 1
和Zoom = 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
那应该使虚线消失。