2010-08-09 8 views
6

से सी सेल से पढ़ने वाले सेल मानों के दौरान एक्सेल vba त्रुटियों को अनदेखा करें मैं सी # से वीबीए मैक्रोज़ चला रहा हूं जो त्रुटियां उत्पन्न कर सकता है। इन त्रुटियों को डिबगिंग के लिए एक पॉप-अप संकेत, विशेषता में बाधा डालने और उपयोगकर्ता इनपुट की आवश्यकता होती है। मुझे इन मैक्रोज़ की ज़रूरत है और उन्हें अक्षम नहीं किया जा सकता है।सी # इंटरनेशनल

मैं इन त्रुटियों को स्वचालित रूप से कैसे अनदेखा कर सकता हूं या संवाद बंद कर सकता हूं?

+0

ओपी, क्या आपको वहां कोई समाधान मिला है? – Jerome

+1

क्या आप एक नमूना स्प्रैडशीट प्रदान कर सकते हैं जो त्रुटियों को फेंक देता है और जो कोड आप मूल्यों को पढ़ने के लिए उपयोग कर रहे हैं? – Lumigraphics

+0

मुझे नहीं लगता कि इससे मदद मिलेगी। मान लीजिए, उदाहरण के लिए, एक सरल मैक्रो टेस्ट 1 को एक ही निर्देश के साथ बुलाकर, स्ट्रिंग की अपेक्षा करने वाले फ़ंक्शन को दोगुना गुजरना। इससे रनटाइम पर एक प्रकार की मिस्चैच त्रुटि उत्पन्न होगी, उपर्युक्त पॉप-अप इंटरप्टिंग निष्पादन प्रदान करेगा। – Jerome

उत्तर

0

फ़ाइल खोलने का प्रयास करने से पहले दृश्य मूल संपादक (जो त्रुटि उत्पन्न होती है) को छिपाने के लिए, Excel.VBE.MainWindow बदलें। गलत पर दृश्यमान। ध्यान रखें कि यदि डीबगर दिखाई नहीं देता है, तो आपको अपने कोड में अपवाद पकड़ना होगा, इसलिए, अपने कोड को एक कोशिश पकड़ने के साथ लिफाफा करें।

यदि मैक्रोज़ की आवश्यकता नहीं है और इसे अनदेखा किया जा सकता है, तो msoAutomationSecurityForceDisable का उपयोग पूरी तरह अक्षम करने के लिए करें।

using InteropExcel = Microsoft.Office.Interop.Excel; 

var Excel = new InteropExcel.Application(); 

// Excel window will NOT popup if macro errors are found but 
// exceptions might be raised when you execute the broken 
// macro. 
Excel.VBE.MainWindow.Visible = false; 

// Uncomment to disable macros completely. 
// Excel.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable; 

// I used this snippet to open a file with a broken macro. 
var MyWorkbook = Excel.Workbooks.Open (@"YourFilePath"); 
var FirstWorksheet = (InteropExcel.Worksheet)MyWorkbook.Worksheets ["Plan1"]; 
var MyCell = ((InteropExcel.Range)FirstWorksheet.Cells [1,1]); 
var CellValue = (Int32)MyCell.Value; 
+1

मुझे डर है मैक्रोज़ को यहां अनदेखा नहीं किया जा सकता है। – Jerome

+0

मै मैक्रो त्रुटियों को छिपाने के लिए समाधान के साथ अपना उत्तर अपडेट किया। –

+0

Excel.VBE.MainWindow.Visible = false; इसका कोई प्रभाव नहीं है मुझे डर है – Jerome

1
सबसे सरल सबसे आसान तरीका में

या। अपने मैक्रोज़ में on error resume next शामिल करें, ताकि मैक्रो त्रुटियों पर रुक न सके।

+0

दरअसल :) लेकिन इस सवाल के दायरे से बाहर। – Jerome