2009-05-28 8 views
5

हमारे पास बहुत सारी रिपोर्टें हैं जो वीबीए & एक्सेल के माध्यम से उत्पन्न होती हैं। रिपोर्ट का केवल एक छोटा सा प्रतिशत वास्तविक गणना है - अधिकांश काम एसक्यूएल कॉल और स्वरूपण/कोशिकाओं के लेखन है। जिनमें से सबसे लंबे समय तक कई घंटे लगते हैं, बहुमत में लगभग 20-30 मिनट लगते हैं।मुफ्त वीबी 6/वीबीए प्रोफाइलर और सर्वोत्तम एक्सेल प्रथाओं

वीबीए/एक्सेल कोड एक डीएल में प्लग करता है जो वीबी 6 डेस्कटॉप ऐप्स का उपयोग करता है - यह यहां है कि सभी एसक्यूएल कॉल किए जाते हैं। हालांकि मुझे यकीन है कि यहां सुधार के लिए जगह है, यह ऐसा नहीं है जो मुझसे चिंतित है - डेस्कटॉप ऐप्स काफी हंसमुख हैं।

बहुतायत में दो वीबीए कार्यों का उपयोग किया जाता है: इन्हें गेट्रेंज और सेटअपअप कहा जाता है और वे लगभग हमेशा एक साथ दिखाई देते हैं। GetRange फ़ंक्शन Excel.Range ऑब्जेक्ट के लिए एक रैपर है। यह रेंज के विस्तार के लिए एक चादर, और 4 मूल्य लेता है। इसका मुख्य उपयोग संपादन के लिए सेल चुनना है। इसे ऑप्टमाइज़ करने का अधिक मौका नहीं दिखता है, लेकिन क्या यह सबसे अच्छा तरीका है?

इसका भागीदार SetupCell है। यह Excel (रेंज, सीमाओं, आदि) के बारे में Excel.Range ऑब्जेक्ट, टेक्स्ट और दर्जन पैरामीटर लेता है। इनमें से अधिकतर पैरामीटर वैकल्पिक बूलियन हैं लेकिन फिर से, यह बहुत अपमानजनक लगता है। इनमें से कुछ को मरणोपरांत सेट किया जा सकता है लेकिन कुछ सेल में निहित मूल्यों पर निर्भर हैं।

इन कार्यों में बहुत सारे कोड शामिल हैं, मुख्य रूप से अगर कथन और कार्य मुझे पोस्ट करने की सराहना नहीं करेंगे।

मुझे लगता है मैं दो सवाल है: वहाँ एक बेहतर तरीका है और क्या यह है और मुक्त प्रोफाइलर है कि मैं अगर समय के थोक यहाँ या dll में है देखने के लिए उपयोग कर सकते हैं देखते हैं क्या है?

उत्तर

3

क्या आपने एक वास्तविक रिपोर्टिंग समाधान का उपयोग करने के बारे में सोचा है? आपका बैकएंड डीबी क्या है? यदि आप MSSQL 2000 या उच्चतर का उपयोग कर रहे हैं तो एक सभ्य रिपोर्टिंग समाधान है जिसका आप नि: शुल्क उपयोग कर सकते हैं। SQL Server Reporting Services

ऐसा लगता है जैसे रिपोर्ट अपने अधिकांश समय स्वरूपण कक्षों को खर्च कर रही हैं। यही कारण है कि रिपोर्ट इतनी धीमी लगती है और डेस्कटॉप ऐप नहीं करता है।

वैकल्पिक रूप से, यदि आप हाथ से पहले स्वरूपण जानते हैं और यह काफी स्थिर है, तो आप कुछ कामों पर कटौती करने के लिए चादरों को प्री-फॉर्मेट कर सकते हैं।

मैं इसे वहां भी फेंक दूंगा। अधिकांश रिपोर्टिंग समाधान सशर्त स्वरूपण और इस तरह के लिए अनुमति देंगे, लेकिन चूंकि उन्हें काम करने के लिए डिज़ाइन किया गया है क्योंकि ऐसा करने के लिए एक्सेल होने से बेहतर होगा।

+0

इतना आसान नहीं है। रिपोर्टों को अलग-अलग लंबाई की आवश्यकता होती है, कुछ कोशिकाओं को कोशिकाओं (या कोशिकाओं के योग) के मूल्य के आधार पर रंगीन होने की आवश्यकता होती है। –

+0

एसएसआरएस आप जिस चीज पर फेंकते हैं उसके साथ सामना करने में सक्षम होंगे - मैं यह जवाब दूसरा करता हूं। –

3

यह एक प्रोफाइलर अनुशंसा नहीं है, लेकिन यह एक्सेल मैक्रोज़ को तेज़ करने के लिए एक सुझाव है जो स्क्रीन को अपडेट करने में अपना समय व्यतीत कर रहे हैं। मैक्रो चल रहा है, जबकि स्क्रीन अद्यतन को बंद करके मेरे पास उत्कृष्ट परिणाम हुए हैं: एप्लिकेशन सेट करें। स्क्रीन अपडेटिंग = गलत, और also using a number of other similar settings। बस मैक्रो खत्म होने पर उन्हें फिर से चालू करना सुनिश्चित करें: पी

+0

हम पहले से ही ऐसा करते हैं और हमने एप्लिकेशन सेट किया है। मैनुअल (xlCalculationManual) के लिए गणना। –

1

यह मुफ़्त नहीं है लेकिन आप इसके साथ प्रोफाइल कर सकते हैं। मुझे संदेह है कि डेमो आपकी आवश्यकताओं के लिए पर्याप्त होगा: http://www.aivosto.com/vbwatch.html

+0

कुछ रिपोर्टों के लिए, हां। दूसरों के लिए, नहीं। प्रत्येक वर्कशीट के लिए हमारे पास एक vba 'file' है, साथ ही कई समर्थन 'फ़ाइलें' हैं। यह निश्चित रूप से डीएलएल पर काम नहीं करेगा क्योंकि इसमें 100 से अधिक वर्ग और मॉड्यूल हैं। –

6

कई घंटे रिपोर्ट के लिए हास्यास्पद है।

यदि समस्या वीबीए "व्यावसायिक एक्सेल डेवलपमेंट" (स्टीफन बुलेन, रोब बोवी एट अल) खरीदती है: इसमें पेर्फमॉन नामक एक नि: शुल्क वीबीए प्रोफाइलर है।

समस्या एक्सेल गणना http://msdn.microsoft.com/en-us/library/aa730921.aspx?ppud=4

देख लेकिन मुझे लगता है कि होता है कि समस्या उच्च संदर्भित बातें सेल-दर-सेल के साथ जुड़े भूमि के ऊपर होता है: आप हमेशा कोशिकाओं के बड़े ब्लॉकों में एक समय में काम करना चाहिए।

+0

अपने लिए अच्छा pimpage :-) गंभीरता से हालांकि समस्या गणना के साथ नहीं है - हम बहुत कम गणना (एक्सेल या अन्यथा) करते हैं। एक प्रोफाइलर यह निर्धारित करने में मदद करेगा कि क्या डीबी को कॉल सिस्टम को मार रहा है या धीमी सेल-बाय-सेल स्वरूपण इसे मार रहा है या नहीं। आप एक समय में कोशिकाओं के एक बड़े ब्लॉक के साथ कैसे काम कर सकते हैं? –

+2

यदि आप स्टीफन बुलेन के पेर्फमॉन का उपयोग नहीं करना चाहते हैं तो उच्च-रेज विंडोज टाइमर का उपयोग करके कुछ समय कोड क्यों न जोड़ें? ब्लॉकों में कर बातें: बुनियादी दृष्टिकोण एक प्रकार चर करने के लिए एक सीमा आवंटित करने के लिए है: मंद vArr के रूप में संस्करण vArr = रेंज ("बी 4: z456") मान 2 यह आप एक प्रकार से युक्त 2-डी दे देंगे। सरणी आप सरणी में हेरफेर कर सकते हैं और एक्सेल रेंज ("बी 4: जेड456") = vArr समान रूप से जब कोशिकाओं को स्वरूपित करते हैं तो कक्षों की एक श्रृंखला को प्रारूपित करते हैं (संभवतः एक टेम्पलेट शीट से प्रतिलिपि/पेस्टेशियल का उपयोग करके) सेल। आदि इत्यादि। –

0

यह वीबीए कोड (या वीबी कोड जो चादरों को लिख रहा है) की तरह लगता है लाइन से इतनी लाइन कर रहा है, इसमें उम्र लग सकती है, और खराब डिजाइन है। एक बार में एक संस्करण के रूप में एक्सेल को लिखें। डेटा आयात किए जाने के बाद शीट को प्रारूपित करें। धन्यवाद रॉस

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