如何closures使用VBA的Excel中的网格线,而不使用ActiveWindow

我有一个VBAmacrosExcel 2013中生成一个单独的Excel报告。 在这个创build的excel报告中,我想closuresGridLines。

我碰到的唯一代码就是这样的

ActiveWindow.DisplayGridlines = False 

但是,这个excel是在后台生成的,

 Dim appObject As New Excel.Application appObject.Visible = False 

这意味着这个报告不是ActiveWindow。 是否有不使用ActiveWindow对象closures网格线的替代方法?

如果您有工作簿的参考,则可以遍历其集合中的所有Windows。 如果应用程序不可见,则只能得到1,但比试图对索引进行硬编码更安全:

 Private Sub ToggleGridLines(target As Workbook) Dim wnd As Window For Each wnd In target.Windows wnd.DisplayGridlines = False Next End Sub 

请注意,这将设置更改工作簿中活动工作表上的显示 – 为什么这是窗口的属性,而不是工作表超出了我的范围。

编辑:

感谢@Tim分享的链接,我意识到我将完全隔开SheetViews集合。 这应该closures任意Worksheet对象的网格线:

 Private Sub TurnOffGridLines(target As Worksheet) Dim view As WorksheetView For Each view In target.Parent.Windows(1).SheetViews If view.Sheet.Name = target.Name Then view.DisplayGridlines = False Exit Sub End If Next End Sub 

ActiveWindow是Windows对象集合的成员。 与任何集合一样,只需按名称而不是指定活动窗口来引用实际窗口。 例如

 Windows("My Workbook.xls").DisplayGridlines = False