تلقيت عرضًا تقديميًا لـ PowerPoint يحتوي على عشرات الشرائح ، تحتوي كل منها على عدد من مربعات النص. على الرغم من أن العرض التقديمي مكتوب باللغة الإنجليزية ، فإن لغة التدقيق الإملائي يتم تعيينها على الفرنسية الكندية. أحاول تغيير اللغة إلى اللغة الإنجليزية ، لكن حتى لو قمت بتحديد كل الشرائح وحددت عنصرًا جديدًا في مربع الحوار Language ، فإن لغة مربعات النص تظل كما هي. لذلك لا بد لي من الانتقال بالشريحة باختيار مربعات النص ثم تغيير اللغة بشكل فردي.
هل هناك طريقة أفضل للقيام بذلك؟
إصدار PowerPoint الذي قمت بتثبيته هو SP3 2002.
يحتوي هذا الموضوع على الإجابة التي عملت بالنسبة لي.
الخطوات التي اتبعتها كانت:
الصق هذا الرمز في اللوحة اليمنى وحفظ الماكرو:
Option Explicit
Public Sub ChangeSpellCheckingLanguage()
Dim j As Integer, k As Integer, scount As Integer, fcount As Integer
scount = ActivePresentation.Slides.Count
For j = 1 To scount
fcount = ActivePresentation.Slides(j).Shapes.Count
For k = 1 To fcount
If ActivePresentation.Slides(j).Shapes(k).HasTextFrame Then
ActivePresentation.Slides(j).Shapes(k) _
.TextFrame.TextRange.LanguageID = msoLanguageIDEnglishAUS
End If
Next k
Next j
End Sub
msoLanguageIDEnglishAUS
يمكن استبداله بأي لغة مطلوبة. يمكن الاطلاع على قائمة اللغات الكاملة هنا .
قم بتنفيذ الماكرو (عن طريق الضغط على F5 داخل المحرر ، أو عن طريق تحديد أدوات ، ماكرو ، وحدات ماكرو ، ChangeSpellCheckingLanguage ، والنقر فوق تشغيل).
بعد ذلك ، ستحصل جميع عناصر النص في العرض التقديمي على لغة الهجاء الجديدة.
أعلم أن الإجابة قد تم قبولها بالفعل (والتي أعطيتها +1 لها لأنها تعمل ومكتوبة جيدًا) ، ولكن قد تكون فكرة إنشاء ماكرو أو حفظه أو استخدامه ماكرو مخيفة للغاية (أو قد تحتوي على إعدادات أمان في بعض الأشخاص) المكان الذي يجعل من الصعب تحقيق هذا). لذلك فإن الحل الأسهل هو استخدام وظائف مدمجة عادية للقيام بذلك. الخدعة هي أن تكون قادرًا على تحديد كل الكائنات الموجودة على جميع الشرائح في وقت واحد ، بدلاً من الشرائح نفسها ، وهذا يتحقق بسهولة في عرض المخطط التفصيلي (للأسف ميزة غير مستغلة بشكل جيد ، ولكنها رائعة لإعادة التنظيم سطح منزلق ، يشجع ويخفض عدد القطع الكاملة ، مثل الرصاصات> شرائح جديدة أو العكس.
ليس لدي برنامج PowerPoint 2002 ("XP") لذلك لست متأكدًا مما إذا كنت بحاجة إلى اتباع الإرشادات لعام 2000 أو لعام 2003 ، ولذا فإنني أغطي كلاهما هنا:
في الإصدارات الأقدم ، تأكد من ظهور شريط الأدوات "مخطط تفصيلي" (View > Toolbars > Outlining) وانقر فوق Expand all زر (الإصدارات الأحدث تتيح لك الحصول على هذا من خلال النقر بزر الماوس الأيمن).
تم إنجاز المهمة.
وبالمثل ، في حين أن كل شيء قمت بتحديده ، يمكنك تغيير أشياء أخرى مثل الخطوط والألوان وما إلى ذلك. وبالرغم من ذلك في كثير من الحالات ، يتم القيام بذلك بشكل أفضل عن طريق تغيير الشريحة الرئيسية ، فإن العرض التقديمي الذي كان يحتوي على العديد من المحررين قد يحتوي على الكثير من مجموعة التنسيق "الثابت" والتي ينحرف عن المعلم الأساسي ويحتاج إلى إعادة تعيين لتكون متسقة. يمكنك أيضًا إعادة تعيين الشرائح الفردية إلى النمط الرئيسي ، ولكن قد يؤدي ذلك إلى تحرك العناصر النائبة أيضًا ، مما قد يكون غير مرغوب فيه في بعض المواقف.
بعد العديد من العروض التقديمية حيث قمت بذلك يدويًا أو استخدمت ماكرو لمرة واحدة ، قمت أخيرًا بتحويله وجعله في وظيفة PowerPoint مناسبة.
لقد قمت بتحميله إلى موقع الويب الخاص بي: PowerPoint LanguageFixer
إنه يعتني بـ:
فقط قم بتعيين أحد مربعات النص على اللغة التي تريدها ، حددها وانقر فوق الزر.
فيما يلي خياران حسب موقفك:
الموقف 1: تم تثبيت النسخة الأصلية من Office من وسائط تثبيت تستند إلى اللغة الفرنسية الكندية.
ستكون قادرًا على ضبط اللغة الافتراضية على اللغة الإنجليزية ، لكن الوظائف الأساسية ستستخدم اللغة الأم لوسائط التثبيت.
الإصلاح الوحيد هو إلغاء تثبيت إصدار اللغة الفرنسية الكندية ، وتثبيت من وسائط التثبيت المستندة إلى اللغة الإنجليزية أو نسخ/لصق العرض التقديمي بأكمله إلى مستند جديد وإعادة تنسيق.
.
الحالة 2: يبدو أن كل شيء هو اللغة الإنجليزية ، ولكن في ظروف محدودة تظهر اللغات الأجنبية.
في هذه الحالة ، فيما يلي إرشادات إصلاح Office 2002:
آمل أن يساعد هذا.
لقد واجهت نفس المشكلات في العروض التقديمية التي تم إجراؤها باستخدام PowerPoint الألمانية ويتم ترجمتها يدويًا إلى الإنجليزية. المشكلة هي أن إعداد اللغة هو في الأساس التنسيق الذي يتم تطبيقه على كل عنصر مربع النص من تلقاء نفسها.
لست على دراية بأي حل مناسب - فقد تعين علي التعايش مع عدم التطابق أو تغيير "تنسيق" اللغة لكل مربع نص فردي على كل شريحة. ليس متعة ، لذلك أنا في الغالب أعيش معها.
الشفرة المنشورة بواسطة Leonardo بسيطة وفعالة بشكل عام ، لكنها لن تؤثر على Shape
s في المجموعات. يستخدم رمز أكثر عمومية العودية للتعامل مع هذه الحالة أيضًا (تم تغييره قليلاً من هنا ، وهو في نفس مؤشر الترابط مثل الرمز بواسطة ليوناردو):
Private Function ChangeLangOfAllText_caller()
'ChangeLangOfAllText (msoLanguageIDEnglishUS)
ChangeLangOfAllText (msoLanguageIDSpanishArgentina)
End Function
Private Function ChangeLangOfAllText(ByVal LangID As Long)
Dim MySlide As Slide
Dim MyShape As Shape
Dim MyD As Design
Dim MyHeaderFooter As HeaderFooter
Dim i, nbs As Integer
''''' First deal with the master slides
For Each MyD In ActivePresentation.Designs
For Each MyShape In MyD.SlideMaster.Shapes
ProcessShapes MyShape, LangID
Next MyShape
Next MyD
''''' Now deal with the slides
' Enable this for debugging
'Debug.Print "File " & ActivePresentation.Name & _
": working with " & ActivePresentation.Slides.Count & " slides"
For Each MySlide In ActivePresentation.Slides
' Enable this for debugging
'Debug.Print " Slide index " & MySlide.SlideIndex & ", Slide number " & MySlide.SlideNumber & _
": working with " & MySlide.Shapes.Count & " shapes"
For Each MyShape In MySlide.Shapes
ProcessShapes MyShape, LangID
Next MyShape
''''' Now deal with the Notes
For Each MyShape In MySlide.NotesPage.Shapes
ProcessShapes MyShape, LangID
Next MyShape
''''' Now deal with the master ' doesn't appear to work, have to try something else
For Each MyShape In MySlide.Master.Shapes
ProcessShapes MyShape, LangID
Next MyShape
Next MySlide
End Function
Private Function ProcessShapes(MyShape As Shape, ByVal LangID As Long)
Dim i As Integer
If ((MyShape.Type = msoGroup) Or (MyShape.Type = msoTable)) Then
On Error Resume Next
For i = 1 To MyShape.GroupItems.Count
''' The trick is to recurse!
ProcessShapes MyShape.GroupItems.Item(i), LangID
Next i
Else
ChangeLang MyShape, LangID
End If
End Function
Private Function ChangeLang(MyShape As Shape, ByVal LangID As Long)
Dim i As Integer
If (MyShape.HasTextFrame) Then
' Enable this for debugging
'Debug.Print " Shape " & MyShape.ZOrderPosition & ", type: " & MyShape.Type & _
", has text frame: " & MyShape.HasTextFrame & ", has text: " & MyShape.TextFrame.HasText & _
", alt. text: " & MyShape.AlternativeText
MyShape.TextFrame.TextRange.LanguageID = LangID
End If
End Function