2016-11-01 24 views
5

'u kullanmadan VBA kullanarak excel'de kılavuz çizgileri nasıl kapatabilirim Excel 2013'te bir Excel raporu üzerinde ayrı bir excel raporu oluşturan bir VBA makrosu var. Oluşturulan bu excel raporunda GridLines'i kapatmak istiyorum.ActiveWindow

Ben Böyle yapmak rastlamak kod tek parça, Ancak bu excel arka yani oluşturulur

ActiveWindow.DisplayGridlines = False 

altında bu raporun demektir

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

olduğunu ActiveWindow değil. ActiveWindow nesnesini kullanmadan kılavuz çizgileri kapatmanın alternatif bir yolu var mı?

+0

'ActiveWindow' ve' appObject.ActiveWindow' aynı şeydir - sadece kendi uygulama nesne içinde bunu hak kazanmak için gerekmez. – Comintern

+1

[Bu] 'ya göre (https://msdn.microsoft.com/en-us/library/office/ff835196.aspx), Windows' ı ("book1.xls") deneyin. DisplayGridlines = False'. – OldUgly

+0

Üzgünüm çocuklar, Windows ("filename.xls") bana aralık dışı abonelik verir. Bu XLS appObject.Visible = False nedeniyle açık değilse bu herhangi bir anlam ifade ediyor. – tempidope

cevap

8

Çalışma kitabına bir başvurunuz varsa, koleksiyondaki tüm Windows üzerinde yineleyebilirsiniz. Uygulama görünmüyorsa, sadece 1 almalısınız ama zor koduna bir dizin daha güvenli olur: Bu çalışma kitabındaki etkin çalışma sayfasında görüntüsünü değiştirmek set olacağı

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

Not - Bu yüzden Pencerenin bir özelliği ve çalışma sayfası bana ait değil.

DÜZENLEME: paylaşılan @Tim Bağlantıya

sayesinde ben tamamen SheetViews koleksiyonunu kapalı aralıklı fark etti. Bu keyfi bir Worksheet nesne için kılavuz çizgileri kapatmak olmalıdır:

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 
+0

Dem trickeh parametreleri! xD Ama cidden. MSDN belgelerinde, E-Tablolar'ın Windows'un bir çocuk olduğu belirtilmektedir. [Bay. Excel] (http://www.mrexcel.com/forum/excel-questions/320215-worksheetview-object.html), aynı çalışma kitabı için iki pencerenin iyi gelebileceği güzel bir demoya sahiptir. Kafamı daha çok sarmaya çalışıyorum. – Tim

+0

@Tim - İlginç bağlantı. 'Excel.Windows' ile çok nadiren başa çıkıyorum, 'SheetViews' koleksiyonunu tamamen unutmuşum. Düzenle'ye bakın. – Comintern

+0

@Comintern fantastik, çözümünüz işe yaradı. Hiyerarşinin ne kadar garip olduğunu - ancak problemimi çözdüm. – tempidope

2

ActiveWindow, Windows nesne koleksiyonunun bir üyesidir. Herhangi bir koleksiyonda olduğu gibi, etkin pencereyi belirtmek yerine, gerçek pencereyi isme göre adlandırın. örn.

+0

Üzgünüm @Tim, alt simge aralık dışında. Bu XLS appObject.Visible = False nedeniyle açık değilse bu herhangi bir anlam ifade ediyor. – tempidope

+0

Daha fazla kod görmem gerekiyor. Şimdiye kadar tek bir karartma kodu olan bir nesne daha sonra onu görünmez kılıyor. Karartmak onu oluşturmakla aynı şey değildir. Comintern sadece tüm pencerelerden döngü yapmak için bazı kodlar yayınladı, ancak bir çalışma kitabı gerçekte oluşturuluncaya kadar (kodunuzda daha fazlasını göreceğiz) başarısız olur. – Tim

+1

@Tim - Böylece Çalışma Kitabı bir parametre olarak. ;-) – Comintern