سؤال

<قوية> قصة العودة قليلا : للدي طلب صغير من شأنها أن استخدام Word لتوليد توقيع توقعات تستند إلى قالب وورد والبيانات من شركة الدليل النشط. وهي تعمل رائعة على أجهزة الكمبيوتر مع أوفيس 2007، منذ أن كنت تستخدم "مايكروسوفت وورد 12.0 كائن مكتبة" عندما كنت مشفرة على جهاز الكمبيوتر الخاص بي.

وهناك عدد غير قليل من أجهزة الكمبيوتر على الشبكة مع Office 2003 رغم ذلك، وعلى أجهزة الكمبيوتر هذه "مايكروسوفت وورد 12.0 كائن مكتبة" مفقود، مما أدى إلى استثناءات اليسار واليمين.

على سؤالي هو : في كيف يمكنني الكشف عن أي إصدار Office المثبت، وبالتالي أي إصدار من "مكتبة كائنات مايكروسوفت وورد" هو متاح، وبالتالي تحميله. أنا واثق تماما أن وظيفة أستخدمه هي في كل من "مايكروسوفت وورد مكتبة كائنات 12.0" و "مايكروسوفت وورد 11.0 كائن مكتبة".

في حالة أي شخص مهتم، هنا هو القانون الحالي بلدي المستخدمة لتوليد التوقيع:

class Signature
{
    public Dictionary<string, string> TemplateMappings { get; set;}
    public string SignatureTemplateFileName { get; set; }
    public string SignatureName { get; set;}
    public bool UseSignatureWithNewMessages { get; set; }
    public bool UseSignatureInReplyMessages { get; set; }

    public Signature()
    {
        UseSignatureWithNewMessages = true;
        UseSignatureInReplyMessages = true;
        TemplateMappings = new Dictionary<string, string>();
    }

    public void Create()
    {
        if(string.IsNullOrEmpty(SignatureTemplateFileName) || !File.Exists(SignatureTemplateFileName))
        {
            throw new InvalidOperationException("SignatureTemplateFileName is null or the file do not exists");
        }

        if(string.IsNullOrEmpty(SignatureName))
        {
            throw new InvalidOperationException("No SignatureName specified");
        }

        object nullObject = System.Reflection.Missing.Value;
        object signatureTemplate = SignatureTemplateFileName;

        // open word doc
        var word = new ApplicationClass();
        var doc = word.Documents.Add(ref signatureTemplate, ref nullObject, ref nullObject, ref nullObject);

        // search/replace user info
        object wdReplaceAll = WdReplace.wdReplaceAll;
        var find = word.Selection.Find;
        foreach (var pair in TemplateMappings)
        {
            find.Text = pair.Key;
            find.Forward = true;
            find.MatchCase = true;
            find.MatchWholeWord = true;
            find.Replacement.Text = pair.Value;
            find.Execute(ref nullObject /* FindText */,
                         ref nullObject /* MatchCase*/,
                         ref nullObject /* MatchWholeWord*/,
                         ref nullObject /* MatchWildcards*/,
                         ref nullObject /* MatchSoundsLike*/,
                         ref nullObject /* MatchAllWordForms*/,
                         ref nullObject /* Forward*/,
                         ref nullObject /* Wrap*/,
                         ref nullObject /* Format*/,
                         ref nullObject /* ReplaceWith*/,
                         ref wdReplaceAll /* Replace*/,
                         ref nullObject /* MatchKashida*/,
                         ref nullObject /* MatchDiacritics*/,
                         ref nullObject /* MatchAlefHamza*/,
                         ref nullObject /* MatchControl */);
        }

        // Add signature to outlook
        var signatureRange = doc.Range(ref nullObject, ref nullObject);
        word.EmailOptions.EmailSignature.EmailSignatureEntries.Add(SignatureName, signatureRange);

        // set new signature as default for news messages and replies
        if (UseSignatureWithNewMessages)
            word.EmailOptions.EmailSignature.NewMessageSignature = SignatureName;
        if (UseSignatureInReplyMessages)
            word.EmailOptions.EmailSignature.ReplyMessageSignature = SignatureName;

        // close and clean up
        doc.Saved = true;
        doc.Close(ref nullObject, ref nullObject, ref nullObject);
        word.Quit(ref nullObject, ref nullObject, ref nullObject);
    }
}

وأي مساعدة سوف تكون محل تقدير كبير. الإدخال على رمز أعلاه هو أيضا موضع ترحيب. ليس لدي أي خبرة الترميز ضد مكتبة مكتب التشغيل المتداخل، لذلك أنا متأكد من أن هناك أشياء يمكن أن أفعله بشكل مختلف.

وأطيب التحيات، ايغل.

هل كانت مفيدة؟

المحلول

وOK وجدت ما كنت أبحث عنه.

MS Office للحصول على صافي الملخصات بعيدا الصداع من إصدارات الجمعية مكتب الكامنة وراء إمكانية التشغيل المتداخل. ربما يمكنك استخدامه مباشرة في المشروع، وإلا دراسته في تنفيذ لفهم كيفية معالجة هذه المسألة. الناس يعملون على هذا المشروع ربما يكون موردا كبيرا لطرح الأسئلة إمكانية التشغيل المتداخل، فضلا عن ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top