को पूरा करने के लिए किसी अन्य एप्लिकेशन की प्रतीक्षा कर रहा है इससे पहले कि आप स्पष्ट हो जाएं: Application.DisplayAlerts = False
ने मेरी समस्या का समाधान नहीं किया है।एक्सेल एक ओएलई एक्शन
मैंने एक वीबीए प्रक्रिया (एक्सेल 2010 में शुरू की) लिखा है जो विभिन्न एक्सेल फ़ाइलों वाली एक सरणी के चारों ओर लूप करता है। लूप फ़ाइल खोलता है, डेटा को रीफ्रेश करता है, सरणी में प्रत्येक आइटम के लिए फ़ाइल को सहेजता है और बंद करता है। मैंने एक त्रुटि कैच सब रूटीन लिखा है, इसलिए मैं लॉग करता हूं कि कौन सी एक्सेल फाइलें खोलने/रीफ्रेश/सहेजने में विफल रही हैं ताकि उपयोगकर्ता मैन्युअल रूप से उन्हें देख सकें।
कुछ फाइलें काफी बड़ी हैं और नेटवर्क में बड़ी मात्रा में डेटा चलती है; कभी-कभी मुझे एक संवाद बॉक्स मिलता है: एक्सेल एक ओएलई एक्शन को पूरा करने के लिए किसी अन्य एप्लिकेशन की प्रतीक्षा कर रहा है।
मैं संदेश को अक्षम करने के लिए Application.DisplayAlerts = False
का उपयोग कर सकता हूं लेकिन यह संभवतः सभी अलर्ट अक्षम कर देगा ताकि मैं त्रुटियों को न पकड़ सकूं?
आगे मैंने लाइन का उपयोग करके परीक्षण किया है और यह संवाद बॉक्स पॉप-अप को रोकता नहीं है। अगर मैं एंटर दबाता हूं तो यह कुछ मिनट बाद फिर से पॉप-अप होगा।
क्या स्टॉप रोकने का कोई तरीका है विशेष रूप से अन्य अलर्ट रोकने के बिना संदेश है?
एनबी। मेरी प्रक्रिया में एक्सेल का नियंत्रण उदाहरण है जो वीबीए चलाता है और कार्यपुस्तिका को एक अलग उदाहरण में रीफ्रेश करने के लिए खोलता है।
आपकी मदद
मेरे कोड का एक उद्धरण के लिए धन्यवाद, जो नीचे ताज़ा तत्वों
Sub Refresh_BoardPivots_Standard()
' On Error GoTo Errorhandler
Dim i
Dim errorText As String
Dim x
Dim objXL As Excel.Application
Set objXL = CreateObject("Excel.Application")
GetPivotsToRefresh ' populate array from SQL
For Each i In StandardBoardPiv
DoEvents
'If File_Exists(i) Then
If isFileOpen(i) = True Then
errorText = i
Failed(failedIndex) = errorText
failedIndex = failedIndex + 1
Else
objXL.Visible = True 'False
objXL.Workbooks.Open FileName:=i
If objXL.ActiveWorkbook.ReadOnly = False Then
BackgroundQuery = False
Application.DisplayAlerts = False
objXL.ActiveWorkbook.RefreshAll
objXL.Application.CalculateFull
objXL.Application.DisplayAlerts = False
objXL.ActiveWorkbook.Save
objXL.Application.DisplayAlerts = True
objXL.Quit
Else
errorText = i
Failed(failedIndex) = errorText
failedIndex = failedIndex + 1
objXL.Application.DisplayAlerts = False
objXL.Quit
Application.DisplayAlerts = True
End If
End If
' Else
' errorText = i
' Failed(failedIndex) = errorText
' failedIndex = failedIndex + 1
' End If
DoEvents
If Ref = False Then
Exit For
End If
Next i
Exit Sub
'Errorhandler:
'
'errorText = i
'Failed(failedIndex) = errorText
'failedIndex = failedIndex + 1
'Resume Next
End Sub
क्यों downvote, क्या गलत है? यदि कोई समस्या है तो मैं इसे – SliderSteve
ठीक कर सकता हूं मैंने आपको +1 दिया क्योंकि मुझे आपके प्रश्न में कुछ भी गलत नहीं दिख रहा है। : पी आपके लिए प्रश्न: आप एक और एक्सेल उदाहरण क्यों बना रहे हैं? क्या यह एक अनावश्यक जटिलता नहीं है? –
धन्यवाद एन 8। हाँ मुझे अपने ब्रेक सब-रूटीन के साथ समस्या हल करने के लिए दूसरा उदाहरण जोड़ना पड़ा। उपयोगकर्ता को एक बटन पर क्लिक करने की आवश्यकता होती है अगर उन्हें प्रक्रिया को सुरक्षित रूप से रोकने की आवश्यकता होती है लेकिन फोकस करने वाली कार्यपुस्तिका के साथ ध्यान केंद्रित किया जाता था, इसलिए बटन को एक्सेस नहीं किया जा सका, इसलिए अलग उदाहरण। – SliderSteve