2013-07-11 6 views
8

हमारे पास कई वर्षों तक हमारे अनुप्रयोगों में कोड की कुछ पंक्तियां खुशी से चल रही हैं (और कार्यालय, 2003, 2007, 2010 आदि के कई संस्करणों में)। उद्देश्य एक वर्ड दस्तावेज़ में एक मेल मर्ज का एक प्रकार प्रदर्शन करने के लिए, एक डेटाबेस से नाम, पते आदि के साथ क्षेत्र प्लेसहोल्डर प्रतिस्थापन है:"आपको इस चयन को संपादित करने की अनुमति नहीं है क्योंकि यह संरक्षित है।" लेकिन केवल कार्यालय 2013 के बाद से?

Dim w As Word.Application 
    Dim d As Microsoft.Office.Interop.Word.Document = Nothing 

...

Dim f As Microsoft.Office.Interop.Word.Field 
    For Each f In d.Fields 
     f.Select() 
     If fieldName = w.Selection.Text Then 
      f.Result.Text = value 
     End If 
    Next 

हालांकि एक उपयोगकर्ता चल रहा कार्यालय 2013 रिपोर्ट लाइन पर इस त्रुटि f.Result.Text = value:

System.Runtime.InteropServices.COMException (0x800A17EC): आप, क्योंकि यह है इस चयन को संपादित करने की अनुमति नहीं कर रहे हैं संरक्षित।

तो, यह तब होता है जब उपयोगकर्ता Office 2013 चला रहा है और इस त्रुटि के लिए बहुत कम ऑनलाइन सहायता है।

दस्तावेज़ का कोई भी भाग सुरक्षित नहीं है, और उपयोगकर्ता बिना किसी समस्या के सीधे दस्तावेज़ में दस्तावेज़ को संपादित कर सकता है।

उत्तर

15

निराशा में, ब्लॉग पोस्ट और यहां तक ​​कि चर्चाओं में उत्तर के लिए ट्रैवलिंग, इस विशेष त्रुटि से हटा दिया गया है, ऐसा लगता है कि Office 2013 में रीडिंगलाउट के डिफ़ॉल्ट उपचार में कोई बदलाव आया है।

लाइन w.ActiveWindow.View.ReadingLayout = False को पेश करने से हमारी समस्या हल हो गई है।

+0

पर सहेजते हैं तो मुझे वास्तव में गड़बड़ हो सकती है, मुझे एक ही समस्या थी और आपके उत्तर ने मुझे सही दिशा में इंगित किया। मैं 'ReadingLayout' का उपयोग नहीं कर सका, हालांकि मुझे लगता है कि इसे बाद के संस्करण में पेश किया गया था, इसलिए मैंने इसके बजाय 'w.ActiveWindow.View.Type = wdPageView' का उपयोग किया। – Alex

+0

समाधान के लिए धन्यवाद, बिल्कुल मुझे क्या चाहिए। –

2

हमारे पास कुछ सी # स्वचालन था जो वर्ड 2007/2010 के साथ ठीक काम करता था, लेकिन वर्ड 2013 के साथ "आपको अनुमति नहीं है ..." चेतावनी के साथ रोक दिया गया था।

इस site पर निम्नलिखित चरणों को हल किया गया।

असल में वहाँ दो सेटिंग्स की जाँच करने के लिए कर रहे हैं:

  • फ़ाइल - विकल्प - जनरल। "रीड व्यू में ओपन ई-मेल अनुलग्नक और अन्य अनुपयुक्त फ़ाइलों को अनचेक करें"
  • फ़ाइल - विकल्प - ट्रस्ट सेंटर - ट्रस्ट सेंटर सेटिंग्स। संरक्षित दृश्य का चयन करें, फिर सभी चेकबॉक्स साफ़ करें।
+0

+1, "ओपन ई-मेल अनुलग्नक ..." सेटिंग मेरी एक्सेस वीबीए समस्या को हल करने के लिए टिकट थी। साझा करने के लिए धन्यवाद। –

1

आप यह निर्दिष्ट नहीं करते कि दस्तावेज़ कैसे खोला गया है, लेकिन एक समस्या जिसे मैंने this question पर स्वीकार किए गए उत्तर का पालन करके हल किया था।

WordApplication.Documents.Open() से WordApplication.Documents.Add() पर स्विचिंग मेरे आवेदन के लिए समस्या का समाधान किया।

0

यह पिछले दो दिनों से (मेरे साथ एक डॉटएम टेम्पलेट बनाने के दौरान) हो रहा है और यह मेरे लिए तय किया गया था कि एक नया सामान्य.dotx बनाना था! पता नहीं है कि यह दूसरों के लिए काम करेगा या नहीं, लेकिन यह मेरे लिए किया था!

1

मेरे मामले में, यह त्रुटि .LockContentControl == true के साथ सामग्री नियंत्रण की उपस्थिति के कारण हुई थी।

इस समस्या को हल करने के लिए, मैंने इस संपत्ति के साथ सामग्री नियंत्रण के IEnumerable<ContentControl> को सत्य पर सेट किया है, और .LockContentControl = false सेट किया है। अब मैं बिना किसी समस्या के .InsertColumnsRight() कर सकता हूं।फिर मैं अपने संग्रह में सभी सामग्री नियंत्रणों के लिए .LockContentControl = true को पुनर्स्थापित करता हूं।

0

जब आप किसी दस्तावेज़ खोलते हैं, निर्दिष्ट है कि यह के रूप में केवल पढ़ने के लिए

object readOnly = false; 
doc = word.Documents.Open(ref path, ref miss, ref readOnly, ...); 
0

मेरे लिए, इस मुद्दे को टिम Dols जवाब के समान था खोला नहीं किया जाना चाहिए, लेकिन मैं के सामग्री अनलॉक करने के लिए की जरूरत जो LockContents संपत्ति है सामग्री नियंत्रण,:। mycontentcontrol.LockContents = False

@ CrazyIvan1974 के लिए, कि समाधान के साथ समस्या यह है कि जोड़ें एक नया दस्तावेज़ बनाता है। यदि आप ऐड का उपयोग करते समय किसी मौजूदा दस्तावेज़ पर इंगित करते हैं, तो यह दस्तावेज़ लोड नहीं करता है, यह टेम्पलेट के रूप में मूल का उपयोग करके एक नया दस्तावेज़ बनाता है। यदि आप मूल

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