2016-11-01 6 views
5

का उपयोग किए बिना एक्सेल में एक्सेल में ग्रिडलाइन कैसे बंद कर सकता हूं मेरे पास एक्सेल 2013 पर एक वीबीए मैक्रो है जो एक अलग एक्सेल रिपोर्ट उत्पन्न करता है। इस एक्सेल रिपोर्ट में बनाई गई रिपोर्ट में, मैं ग्रिडलाइन को बंद करना चाहता हूं।मैं सक्रिय विन्डो

कोड है कि मैं पार चलो ऐसा होता है बनाने के लिए का केवल कुछ भाग,

ActiveWindow.DisplayGridlines = False 

हालांकि, इस एक्सेल पृष्ठभूमि यानी में उत्पन्न होता है नीचे के रूप में है

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

इस रिपोर्ट है कि इसका मतलब है ActiveWindow नहीं है। ActiveWindow ऑब्जेक्ट का उपयोग किए बिना ग्रिडलाइन को बंद करने का कोई वैकल्पिक तरीका है?

+0

'ActiveWindow' और' appObject.ActiveWindow' एक ही बात कर रहे हैं - तुम सिर्फ अपने स्वयं के आवेदन वस्तु के भीतर यह अर्हता प्राप्त करने की जरूरत नहीं है। – Comintern

+1

[इस] के अनुसार (https://msdn.microsoft.com/en-us/library/office/ff835196.aspx), 'विंडोज़ ("book1.xls") आज़माएं। DisplayGridlines = गलत। – OldUgly

+0

क्षमा करें दोस्तों, विंडोज़ ("filename.xls") मुझे रेंज से सबस्क्रिप्ट देता है। यह एक्सएलएस appObject की वजह से खुला नहीं है। दृश्यमान = गलत अगर यह कोई समझ में आता है। – tempidope

उत्तर

8

यदि आपके पास कार्यपुस्तिका का संदर्भ है, तो आप अपने संग्रह में सभी विंडोज़ को फिर से सक्रिय कर सकते हैं। यदि आवेदन दिखाई नहीं देता है, तो आप केवल 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 संग्रह। यह एक मनमाना 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 
+0

डेम ट्रिकहे पैरामीटर! एक्सडी लेकिन गंभीरता से। एमएसडीएन दस्तावेज का उल्लेख है कि शीट्स विंडोज का एक बच्चा है। [श्री। एक्सेल] (http://www.mrexcel.com/forum/excel-questions/320215-worksheetview-object.html) का एक अच्छा डेमो है कि एक ही कार्यपुस्तिका के लिए दो खिड़कियों का क्या अच्छा आ सकता है। मैं अपने सिर को इसके चारों ओर लपेटने की कोशिश कर रहा हूं। – Tim

+0

@Tim - दिलचस्प लिंक। मैं 'Excel.Windows' से निपटता हूं इसलिए शायद ही कभी मैं 'शीट व्यू' संग्रह के बारे में भूल गया। संपादन देखें। – Comintern

+0

@ कॉमिनटर शानदार, आपका समाधान काम किया। वास्तव में अजीब है कि पदानुक्रम कैसे है - हालांकि मेरी समस्या का समाधान किया। – tempidope

2

ActiveWindow विंडोज ऑब्जेक्ट संग्रह का सदस्य है। किसी भी संग्रह के साथ, सक्रिय विंडो निर्दिष्ट करके बस वास्तविक विंडो को नाम से संदर्भित करें। उदाहरण के लिए

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

क्षमा करें @Tim, सीमा से बाहर सदस्यता। यह एक्सएलएस appObject की वजह से खुला नहीं है। दृश्यमान = गलत अगर यह कोई समझ में आता है। – tempidope

+0

मुझे और कोड देखना होगा। अभी तक एकमात्र कोड मंद एक वस्तु है तो इसे अदृश्य सेट करता है। इसे कम करना इसे बनाने जैसा नहीं है। Comintern ने बस सभी विंडोज़ के माध्यम से लूपिंग के लिए कुछ कोड पोस्ट किया लेकिन यह तब तक असफल हो जाएगा जब तक कि वर्कबुक वास्तव में नहीं बनाया जाता है (जिसे हम आपके अधिक कोड में देखेंगे)। – Tim

+1

@Tim - इस प्रकार वर्कबुक पैरामीटर के रूप में। ;-) – Comintern

संबंधित मुद्दे