कई कार्यालय दस्तावेज़ खोलने पर कई उदाहरण


9

16.0.8625.2121कार्यालय के संस्करण से शुरू करना (वर्ड और एक्सेल के साथ परीक्षण किया गया) - जब आप एक्सप्लोरर में कई दस्तावेज़ों का चयन करते हैं और उन्हें खोलने के लिए Enter दबाते हैं, तो आप पिछले चयनित दस्तावेज़ों की गिनती के लिए उदाहरणों के साथ समाप्त हो जाएंगे।

निम्न चरणों का पालन करने के लिए:

  • अपनी मशीन पर कहीं भी 2 खाली एक्सेल वर्कबुक बनाएं
  • उन 2 फ़ाइलों का चयन करें
  • मारो मारो
  • टास्कमैनगर की जांच करें और आपको एक्सेल के 2 उदाहरण दिखाई देंगे

पहले के संस्करणों में 16.0.8625.2121आप केवल 1 उदाहरण के साथ समाप्त होंगे।

के साथ परीक्षण किया गया

  • 16.0.4266.1003 - हमारे आस-पास के पुराने संस्करणों की तुलना में सुंदर पुरानी छवि हमारे पास नए संस्करणों के लिए अद्यतन की गई थी

    officec2rclient.exe /update user updatetoversion=16.0.xxxx.yyyy
    

उन नए बिल्ड के साथ कदम से कदम का पुन: परीक्षण किया गया:

  • 16.0.8431.2094
  • 16.0.8431.2107
  • 16.0.8528.2139
  • 16.0.8528.2147

इससे पहले कि स्पष्ट उल्लेख किया जाता है, DisableMergeInstanceisnt सेट।

क्या यह एक नई "सुविधा" या बग है? मेरा मानना ​​है कि यह एक बग है।

क्या इसके आसपास कोई रास्ता है?

अग्रिम जानकारी:

हमने इस व्यवहार का परीक्षण किया (हमेशा नवीनतम संस्करण)

  • विंडोज 7 + कार्यालय 2016 - दुर्व्यवहार होता है
  • विंडोज 10 + कार्यालय 2016 - दुर्व्यवहार होता है

यह सुनिश्चित करने के लिए पुराने Office संस्करण की भी जाँच की गई कि यह Office 2016 थिंग है

  • विंडोज 8 + ऑफिस 2013 - होता नहीं है
  • विंडोज 7 + ऑफिस 2010 - नहीं होता है
  • विंडोज 10 + ऑफिस 2010 - ऐसा नहीं होता
  • विंडोज 10 + ऑफिस 2013 - होता नहीं है

जवाबों:


6

मैं माफी माँगता हूँ अगर मैं अपनी व्याख्याओं को बार-बार दोहराता हूँ, लेकिन मुझे यह मुद्दा बहुत जटिल लगता है, इसलिए मैंने यह सुनिश्चित करने की कोशिश की कि यह पाठकों के लिए प्रासंगिक हो।

हालांकि यह ज्ञात नहीं है कि यह बग है या इसका उद्देश्य था, हम इसे हार्ड तर्क के बजाय DDE संदेश बनाकर डायनामिक डेटा एक्सचेंज प्रोटोकॉल (DDE) का उपयोग करके "उसी" उदाहरण में खोलने के लिए बाध्य कर सकते हैं 1 "फ़ाइल को निष्पादित करते समय खोलने के लिए उस उदाहरण के लिए फ़ाइल की ओर इशारा करते हुए। (हालांकि, DDE का उपयोग कठिन तर्क के साथ भी किया जाता है)।

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

अटकलों

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

ऐसा लगता है कि जब फ़ाइल पथ का उपयोग प्रोग्राम के तर्क के रूप में किया जाता है, तो यह केवल इस प्रवृत्ति का अनुसरण करता है:

  • शब्द 2016
  • एक्सेल 2016

जब पहली बार से पहले उदाहरणों को बनाने के लिए एक तर्क के रूप में उपयोग किया जाता है यदि पहले तैयार है (या यदि गैर-प्रथम यह देखते हैं कि तैयार है), तो गैर-प्रथम उदाहरण तर्क को पहले DDE संदेश के रूप में रिले करने में सक्षम प्रतीत होता है।

हालाँकि, यदि हम प्रोग्राम को निष्पादित करते हैं और फ़ाइल को खोलने के लिए DDE संदेश का उपयोग करते हैं, तो यह DDE प्रोटोकॉल का तुरंत पालन करने लगता है कि क्या पहला उदाहरण तर्क के माध्यम से DDE संदेश को स्वीकार करने के लिए तैयार है या नहीं। पहले उदाहरण के लिए तैयार होने या न होने की संभावना इस बात पर निर्भर करती है कि क्या गैर-पहला पहला उदाहरण तैयार होने के रूप में देखता है, और यदि ऐसा नहीं होता है तो यह पहले डीडीई संदेश नहीं भेजेगा, जो केवल तर्क के माध्यम से खुलने पर होता है। । गैर-पहले को "तैयार नहीं" या "गैर-मौजूद" के रूप में देखने की अटकलें इस तथ्य से सुझाई जाती हैं कि DDE संदेश (गैर-पहले से) तब स्वीकार किए जाते हैं जब: गैर-पहले के माध्यम से निष्पादित नहीं किया जाता है एक तर्क सम्मेलन "% 1"; और यह एक डीडीई संदेश के माध्यम से खोलने के लिए कहा गया है।

जैसा कि मेरी अटकलें हैं: इन अनुप्रयोगों के लिए कोड यह निर्धारित करने के लिए कुछ अस्पष्ट विधि का उपयोग करता है कि क्या एक और उदाहरण "तैयार" है और यदि ऐसा है तो एक तर्क का उपयोग करने पर DDE प्रोटोकॉल का उपयोग करेगा। यह एक अलग विधि का उपयोग करने के लिए लगता है जब यह निर्धारित करने के लिए DDE प्रोटोकॉल प्राप्त करता है, तो इसे दूसरे उदाहरण पर भेजने के लिए। यह छद्मकोड के प्रभाव में दिखाई देगा:

if(argrument.wasUsed()){
    // Office's obscure condition
    if(Office.thinksInstanceIsReady(anotherInstance)){
        // Use DDE Protocol
        if(anotherInstance.exists()){ // already knew that
            sendDDEmessage(anotherInstance);
            exitThisInstance();
        }
    } else {
        selfFollowDDEmessage(); // Leave open this instance
    }
if(givenDDEMessage()){
    // Use DDE Protocol
    if(anotherInstance.exists()){
        sendDDEmessage(anotherInstance);
        exitThisInstance();
    } else {
        selfFollowDDEmessage();
    }
}

यह बताने का कोई तरीका नहीं है कि क्या यह बग है या इसका मकसद किसी कारण से अस्पष्ट होना है, बिना प्रोग्रामर हमें बताए।

प्रण

हम कुछ फ़ाइल एक्सटेंशन के निष्पादन को अब एक तर्क के रूप में निष्पादित की जा रही फ़ाइल पथ ("% 1") को नहीं भेजना चाहते हैं, बल्कि DDE संदेश की सामग्री के लिए निष्पादित होने वाले कार्यक्रम को बता सकते हैं, जिनमें से एक फ़ाइल खोलने के लिए एक अनुरोध शामिल है, जो मौजूद होने पर पहले से मौजूद उदाहरण के लिए इसे रिले कर देगा और यदि इसका उपयोग नहीं करता है। कौन सा अनुमान है, इन अनुप्रयोगों की अस्पष्ट आवश्यकताओं को एक और उदाहरण के लिए "तैयार" के रूप में देखने के लिए बायपास करेगा यदि फ़ाइल पथ का एक तर्क उपयोग किया जाता है।

ये सभी फ़ाइल एक्सटेंशन क्लास कीज़ से संबंधित हैं, जिन्हें xनिम्न के साथ प्रतिस्थापित किया जाएगा :

वर्ड के लिए

FILEEXT          CLASS NAME (x)
 .doc*           Word.Document.8
 .docm†    Word.DocumentMacroEnabled.12
 .docx*         Word.Document.12
 .dot            Word.Template.8
 .dotm†    Word.TemplateMacroEnabled.12
 .dotx†         Word.Template.12
 .odt        Word.OpenDocumentText.12
 .rtf†             Word.RTF.8
 .wbk             Word.Backup.8
 .wiz             Word.Wizard.8
 .wll             Word.Addin.8

एक्सेल के लिए

FILEEXT             CLASS NAME (x)
 .csv*                Excel.CSV
 .ods       Excel.OpenDocumentSpreadsheet.12
 .slk                 Excel.SLK
 .xla                Excel.Addin
 .xlam†        Excel.AddInMacroEnabled
 .xld                Excel.Dialog
 .xlk                Excel.Backup
 .xll                 Excel.XLL
 .xlm              Excel.Macrosheet
 .xls*              Excel.Sheet.8
 .xlsb†     Excel.SheetBinaryMacroEnabled.12
 .xlshtml           Excelhtmlfile
 .xlsm†       Excel.SheetMacroEnabled.12
 .xlsx*             Excel.Sheet.12
 .xlt†             Excel.Template.8
 .xlthtml          Excelhtmltemplate
 .xltm†        Excel.TemplateMacroEnabled
 .xltx†             Excel.Template
 .xlw               Excel.Workspace
 .xlxml               Excelxmlss

* सबसे महत्वपूर्ण / आम फ़ाइल एक्सटेंशन जो न्यूनतम के रूप में किया जाना चाहिए। व्यक्तिपरक।

† माध्यमिक सबसे महत्वपूर्ण / सामान्य फ़ाइल एक्सटेंशन जो न्यूनतम के रूप में किया जाना चाहिए। व्यक्तिपरक।

इन सूचियों को कमांड-लाइन के माध्यम से दोहराया जा सकता है: आधिकारिक संक्षिप्त नाम (केस-संवेदी) के साथ assoc | findstr Wordप्रतिस्थापित Wordकरना।

आप सभी के पास ऐसा करने का विकल्प है यदि आपको लगता है कि यह आवश्यक है। यदि आप जितना अधिक करना चाहते हैं, आप उन वैकल्पिक चरणों का पालन करना चाहते हैं जो मैं प्रदान करूंगा, जिससे आपको आवश्यक कार्य कम करना चाहिए।

आप नीचे दिए गए प्रत्येक रजिस्ट्री कुंजी के लिए निम्न निर्देशों का पालन xअपनी पसंद के इसी वर्ग (तों) के साथ कर सकते हैं:

  • HKEY_CLASSES_ROOT\x\shell\Open
  • HKEY_CLASSES_ROOT\x\shell\OpenAsReadOnly

(उदाहरण: HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open)

एक बार फिर, OpenAsReadOnlyकुंजी, विकल्प है यह तब तैयार होगा जब फ़ाइल को ऐसे निष्पादित किया जाता है कि यह केवल-पढ़ने के लिए होगा।

एक छोटी सी सावधानी - एक बैकअप

संशोधन के पहले रजिस्ट्री मान क्या थे, यह याद रखने के लिए, आप कुंजी शाखा पर राइट-क्लिक करना चाहते हैं HKEY_CLASSES_ROOT, और संदर्भ मेनू के तहत "निर्यात" पर क्लिक करें और पंजीकरण फ़ाइल को किसी स्थान पर सहेजें। मामले में डॉक्टर ब्राउन कहते हैं, "हमें वापस जाने की आवश्यकता है," आप बस इसे निष्पादित करके और निर्देशों का पालन करके रजिस्ट्री कुंजी को आयात कर सकते हैं।

वैकल्पिक रूप से, आप इसे भी चला सकते हैं ताकि आपको याद रहे कि commandछोटी गलतियों को ठीक करने के लिए मूल्य और वर्ग के नाम क्या थे:

assoc>>fileexts.txt जिसका उपयोग करके फ़िल्टर किया जा सकता है type fileexts.txt | findstr Word

ftype>>classnames.txt जिसका उपयोग करके फ़िल्टर किया जा सकता है type classnames.txt | findstr Word

अनुदेश

जैसा कि आप करना चाहते हैं, ऊपर सूचीबद्ध प्रत्येक प्रमुख मूल्य के लिए इनका पालन किया जाएगा।

अपने पसंदीदा रजिस्ट्री संपादक में प्रवेश करें या regeditआप संशोधित करना चाहते हैं कक्षा में जाएं।

बुलाया कुंजी में दर्ज commandकरें, (Default)मूल्य पर राइट-क्लिक करें , और संदर्भ मेनू के तहत "संशोधित करें" पर क्लिक करें।

वर्तमान में सेट वही होना चाहिए जो इसके द्वारा निष्पादित किया गया था ftype | findstr Word

बनने के लिए, अंतरिक्ष सहित मूल्य के अंत में प्रत्यक्ष तर्क को हटाने के लिए इसे बदलें :

  • "C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE"
    (एक्सेल 64-बिट के लिए)
  • "C:\Program Files\Microsoft Office\Root\Office16\WINWORD.EXE"
    (वर्ड 64-बिट के लिए)
  • "C:\Program Files (x86)\Microsoft Office\Root\Office16\WINWORD.EXE"
    (शब्द 32-बिट के लिए)
  • "C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE"
    (एक्सेल 32-बिट के लिए)

कुंजी में दर्ज करें ddeexec(यदि यह मौजूद नहीं है, तो कुंजी बनाएं) जो कुंजी के बगल में होगी command, (Default)मूल्य पर राइट-क्लिक करें , और संदर्भ मेनू के तहत "संशोधित करें" पर क्लिक करें, और बनने के लिए मूल्य निर्धारित करें:

  • [REM _DDE_Direct][FileOpen("%1")] - (शब्द के लिए)
  • [open("%1")] - (एक्सेल के लिए)

नीचे ddeexecएक नई कुंजी topic(यदि यह मौजूद नहीं है) नामक एक कुंजी बनाएं , तो (Default)मूल्य पर राइट-क्लिक करें , और संदर्भ मेनू के तहत "संशोधित करें" पर क्लिक करें, और बनने के लिए मान सेट करें system(यदि पहले से नहीं है)।

संशोधनों के बाद आपको इन परिवर्तनों को रजिस्ट्री में बनाने के बाद एक उन्नत कमांड प्रॉम्प्ट या शेल के साथ इसे चलाने के लिए shell32.dll ताज़ा करना पड़ सकता है:

regsvr32 /i shell32.dll

यह एक विंडोज 10 कार्यालय 2016 संस्करण 16.0.8625.2127 पर परीक्षण किया गया है

वैकल्पिक शॉर्टकट

आप फ़ाइल एक्सटेंशन (जैसे HKEY_CLASSES_ROOT\.xlsx) के लिए कुंजी पर भी जा सकते हैं और एक एकल वर्ग के लिए "(डिफ़ॉल्ट)" मान को संशोधित कर सकते हैं, यह दृष्टिकोण, यदि पीछा किया जाता है, तो एक ही वर्ग मान (जैसे Excel.Sheet.12) के लिए कई फ़ाइल एक्सटेंशन को इंगित कर सकते हैं जो आप केवल उस वर्ग को एक बार DDE संदेश के साथ संशोधित करना होगा। यदि आप ऐसा करते हैं, तो उस रजिस्ट्री शाखा के अंदर वर्ग नाम के सभी दोहराव को भी फिर से नाम देना चाहिए। हालांकि, इस तरह की सिफारिश नहीं की जाती है, क्योंकि यह आसानी से टूट सकता है, और अगर आपको समय बचाने के लिए सभी फ़ाइल एक्सटेंशन करने थे तो यह किया जाना चाहिए।

Sidenotes:

/oतर्क यूआरएल के लिए एक तर्क है, इसलिए के रूप में यह शायद ही कभी पारित हो जाता है इस कार्यक्षमता कम करने में एक बड़ी चिंता का विषय नहीं है। हालाँकि, यदि आप चाहें, तो आप (Default)मानों को समायोजित करते समय तर्क के इस हिस्से को छोड़ सकते हैं।

मैं इसे एक समुदाय विकी बनाने पर विचार कर रहा हूं, क्योंकि यह बहुत ही सट्टा है और अधूरा भी है (यदि वर्ड और एक्सेल केवल यही नहीं थे)। कृपया इस पर एक राय दें।


1

@ El8tedN8te द्वारा उत्कृष्ट उत्तर के अलावा, मैं टिप्पणी करता हूं कि एक्सेल के लिए ddeexecरजिस्ट्री कुंजी को संशोधित करना आवश्यक नहीं है ।

यह (Default)आइटम का मान सेट करने के लिए पर्याप्त है:

"C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /dde "%1"

मेरे परीक्षणों से यह सुनिश्चित होता है कि एक्सेल का केवल एक उदाहरण निष्पादित होता है।


खदान पर, इस विधि से कोई फायदा नहीं हुआ, यह एक उदाहरण में नहीं चला। मैंने खुद को गलत साबित करने की बहुत कोशिश की। मैंने पुनः आरंभ किया, डबल चेक किया मैं सही क्लास नाम और एक्सटेंशन का उपयोग कर रहा था, आपके तर्क फ्लिप-फ्लॉप कर दिए और "2 आर" को मार दिया। वास्तव में, इसके विपरीत, भले ही वे एक साथ नहीं खोले गए थे, अतिरिक्त तर्क ने उन्हें अलग-अलग उदाहरण बनाए, जो यहां स्वीकार किया जाता है: social.technet.microsoft.com/Forums/office/en-US/…
El8dNn

@ El8tedN8te: मुझे नहीं पता कि हमारे दो कंप्यूटरों में क्या अंतर है। शायद मेनू फ़ाइल में> विकल्प> उन्नत, सामान्य के तहत, विकल्प "डायनामिक डेटा एक्सचेंज (डीडीई) का उपयोग करने वाले अन्य अनुप्रयोगों पर ध्यान न दें"। आपका लिंक इस बात की पुष्टि करता है कि /ddeएकल उदाहरण के लिए बाध्य होना चाहिए।
harrymc

मुझे नहीं पता कि जब मैं उस लिंक को पढ़ता था तो मैं रहस्यमय था कि ... हा ... हा ... हां, मैंने उस सेटिंग की जांच की ... इस बात पर ध्यान देने योग्य है कि मेरा अलग व्यवहार क्यों है। अगर मेरा पीसी गलत है, तो मेरा अनुमान गलत है। क्या मैं पूछ सकता हूं, आपका कार्यालय संस्करण?
एल 8 डीएन 8

@ El8tedN8te: संस्करण 16.0.8625.2121।
harrymc

मेरी मशीन पर यह भी @ El8tedN8te की तरह काम नहीं कर रहा है।
रैंड रैंडम

-1

में इस पेज बताया जाता है कि " Excel में कोई एमडीआई संगतता विकल्प नहीं है। "

"एमडीआई" मल्टीपल डॉक्यूमेंट इंटरफेस के लिए खड़ा है , और इसे एसडीआई (सिंगल डॉक्यूमेंट इंटरफेस) द्वारा बदल दिया गया है, इसलिए इसमें कोई बग नहीं है। यह वह तरीका है जिसमें अब एक्सेल काम करता है।

आप जो कर सकते हैं वह है कार्यपुस्तिका के माध्यम से दबाकर Ctrl+TAB, और Ctrl+Shift+TABपीछे की ओर चक्र करने के लिए। यदि आप चाहें तो आप ऐसे एप्लिकेशन इंस्टॉल कर सकते हैं जो इस कार्यक्षमता को पूरे ऑफिस सूट में जोड़ते हैं। इन दो विकल्पों की जाँच करें:

दुर्भाग्य से मैं अभी इन सॉफ्टवेयर्स का परीक्षण नहीं कर सकता।


यह सवाल का जवाब नहीं देता है क्योंकि यहां तक ​​कि आपके द्वारा प्रदान की गई लिंक भी कहती है जब आप एक के बाद एक दो एक्सेल वर्कशीट खोलते हैं, "प्रोसेस टैब पर आप तब तक स्क्रॉल करते हैं जब तक कि आप Excel.exe को न देख लें। ध्यान रखें कि यद्यपि आपने एक्सेल की दो घटनाएँ खोली हैं। एक्सेल के एक ही उदाहरण में दो वर्कबुक शामिल हैं । " जिस तरह से ओपी दो उदाहरण बनाता है (उसी विधि के साथ जो माइक्रोसॉफ्ट का है) इस कथन का खंडन करता है कि "एक्सेल में एमडीआई संगतता विकल्प नहीं है" क्योंकि कई दस्तावेज़ इंटरफेस (उदाहरण) दिखाई दे रहे हैं, उसी उदाहरण के भीतर नहीं होना चाहिए।
El8dN8

जैसा कि @ El8tedN8te ने बताया कि मैं 2 उदाहरणों (2 प्रक्रियाओं) और 2 खिड़कियों के बारे में बात कर रहा हूं।
रैंड रैंडम

मैं अपनी पिछली टिप्पणी को सही करना चाहूंगा, प्रदान की गई बोली वास्तव में सही है। इसलिए मेरी अंतिम सजा ... मेरी अंतिम टिप्पणी की अवहेलना करें। मैं अनुमान लगाया जा रहा था।
El8dN8 3

यह ठीक है, @ El8tedN8te। मैं सोच रहा था कि बोली में क्या गलत था
m2cit
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.