2013-09-13 7 views
5

मैं एक निर्देशिका (सी # का उपयोग करके) लूप करना चाहता हूं और वहां सभी एक्सेल शीट रीफ्रेश करना चाहता हूं। मैं उपयोग करता हूं:कार्यपुस्तिका के लिए प्रतीक्षा करें। रीफ्रेश सभी() (सी #)

Workbook.RefreshAll(); 

मैं Workbook.RefreshAll() स्टेटमेंट को समाप्त करने के लिए कैसे प्रतीक्षा कर सकता हूं?

समस्या यह है: मैं FileA, then Workbook.RefreshAll() खोलता हूं और फिर FileB खोलता हूं - FileA के लिए ताज़ा करें समाप्त हो गया है। एकमात्र समाधान मैंने पाया

System.Threading.Thread.Sleep(20000); 

जो मैं बहुत अनाकर्षक पाया की तरह कुछ एक बेहतर तरीका प्रतीक्षा करने के लिए कॉल करने के लिए ...

कोई पता है क्या है?

+0

[एक्सेल वीबीए रीफ्रेश प्रतीक्षा] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/8925403/excel-vba-refresh-wait) –

उत्तर

2

आप अपने Workbook के माध्यम से जाने के लिए और सभी का BackgroundQuery संपत्ति सेट करते हैं आपके QueryTable से false, RefreshAll आगे बढ़ने से पहले समाप्त होना चाहिए।

foreach (Worksheet worksheet in workbook.Worksheets) 
{ 
    foreach (QueryTable table in worksheet.QueryTables) 
     table.BackgroundQuery = false; 
} 

//This will finish executing before moving on 
workbook.RefreshAll(); 
3

अपडेट किया गया 2016/05/31 ...

आपकी मदद के लिए धन्यवाद। मैं निम्नलिखित समाधान नहीं मिला:

foreach (MSExcel.WorkbookConnection cnn in wb.Connections) 
{ 
    if (cnn.Type.ToString() == "xlConnectionTypeODBC") 
    { 
     cnn.ODBCConnection.BackgroundQuery = false; 
    } 
    else 
    { 
     cnn.OLEDBConnection.BackgroundQuery = false; 
    } 
} 

फ्रैंक

+0

आप प्रत्येक शीट के लिए एक बार प्रत्येक कार्यपुस्तिका कनेक्शन अपडेट कर रहे हैं, बाहरी पाश व्यर्थ है । –

0

जब अपने एक्सेल एसक्यूएल सर्वर/एमएस एक्सेस से डेटा खींचने के लिए पृष्ठभूमि क्वेरी चलाने के लिए है नीचे कोड पूरी तरह से काम हो जाएगा और यह इंतजार करेंगे के लिए क्वेरी सफल हुआ ।

public void RefreshSheet(Excel.Application Excel, Excel.Workbook WB) 
{ 
    WB.RefreshAll(); 
    Excel.Application.CalculateUntilAsyncQueriesDone(); 
    WB.save(); 
} 

यहां डब्ल्यूबी कार्यपुस्तिका है और एक्सेल आपके कोड में घोषित एक्सेल एप्लिकेशन है।

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