แม้ว่าเธรดนี้จะค่อนข้างเก่า แต่ Microsoft ก็ไม่ได้ให้วิธีการแก้ปัญหาที่ฉันรู้ ฉันแนะนำวิธีการอื่นสำหรับผู้ใช้ Mac: เปิดงานนำเสนอของคุณใน Keynote เปลี่ยนภาษาการสะกดและอาจแก้ไขงานนำเสนอทั้งหมดของคุณแล้วส่งออกไปยัง PowerPoint
แม้ว่าเธรดนี้จะค่อนข้างเก่า แต่ Microsoft ก็ไม่ได้ให้วิธีการแก้ปัญหาที่ฉันรู้ ฉันแนะนำวิธีการอื่นสำหรับผู้ใช้ Mac: เปิดงานนำเสนอของคุณใน Keynote เปลี่ยนภาษาการสะกดและอาจแก้ไขงานนำเสนอทั้งหมดของคุณแล้วส่งออกไปยัง PowerPoint
คำตอบ:
หากต้องการเปลี่ยนภาษาของPowerPoint ทั้งหมดอย่างง่ายดายให้เปิดแท็บมุมมองแล้วเลือกมุมมองเค้าร่าง
ตอนนี้กด
ในขณะที่คุณมีทุกอย่างที่เลือกคุณสามารถเปลี่ยนสิ่งอื่น ๆ เช่นแบบอักษรสีและอื่น ๆ แม้ว่าในกรณีส่วนใหญ่จะทำได้ดีกว่าโดยเปลี่ยนต้นแบบภาพนิ่งการนำเสนอที่มีบรรณาธิการจำนวนมากอาจมีชุดรูปแบบ 'ยาก' มากมาย เบี่ยงเบนจากต้นแบบต้นแบบและต้องการรีเซ็ตให้สอดคล้องกัน นอกจากนี้คุณยังสามารถรีเซ็ตแต่ละสไลด์เป็นสไตล์ต้นแบบ แต่อาจส่งผลให้ตัวยึดตำแหน่งเคลื่อนไหวได้เช่นกันซึ่งอาจไม่เป็นที่ต้องการในบางสถานการณ์
สำหรับฉัน - ต้องการเริ่ม PowerPoint ใหม่ อาจเป็นเพราะฉันได้เปลี่ยนภาษาการแก้ไขด้วย :
ใช้Powerpoint 2010ฉันเปิดเมนูเค้าร่าง -
เลือกข้อความทั้งหมด (Ctrl + A) เปิดเมนูภาษาและตั้งค่าภาษาพิสูจน์อักษรของฉัน
และมันก็ใช้งานได้!
เมนูภาษาตั้งอยู่บนแท็บรีวิวริบบิ้น (หลังแท็บการนำเสนอภาพนิ่งและมองไม่เห็นบนหน้าจอ)
คำตอบที่มีอยู่ใช้ได้กับข้อความที่มีอยู่ในโครงร่าง น่าเสียดายในกรณีของฉันนี้ไม่ครอบคลุมส่วนสำคัญของข้อความรวมถึงตัวเลขตาราง ฯลฯ
มาโครนี้แก้ปัญหาให้ฉันได้:
Sub ChangeProofingLanguageToEnglish()
Dim j, k, m, scount, fcount, gcount 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 = msoLanguageIDEnglishUS
End If
If ActivePresentation.Slides(j).Shapes(k).Type = msoGroup Then
gcount = ActivePresentation.Slides(j).Shapes(k).GroupItems.Count
For m = 1 To gcount
If ActivePresentation.Slides(j).Shapes(k).GroupItems.Item(m).HasTextFrame Then
ActivePresentation.Slides(j).Shapes(k).GroupItems.Item(m) _
.TextFrame.TextRange.LanguageID = msoLanguageIDEnglishUS
End If
Next m
End If
Next k
Next j
End Sub
"msoLanguageIDEnglishUS" ซึ่งใช้ในแมโครด้านบนสามารถถูกแทนที่ด้วยภาษาที่ต้องการ รายการภาษาทั้งหมดสามารถดูได้ในบทความนี้
(เครดิตไปที่ Ganesh Kumar ซึ่งโพสต์มาโครดั้งเดิมที่นี่ฉันเพิ่มการสนับสนุนสำหรับการจัดกลุ่มรูปร่างระดับแรกเพื่อปรับปรุงเพิ่มเติมมาโครสามารถทำการเรียกซ้ำเพื่อค้นหากลุ่มที่มีกลุ่มอื่น ๆ ฯลฯ )
ฉันปรับปรุงตามคำตอบของ Inigoเพื่อจัดทำเวอร์ชันแบบเรียกซ้ำซึ่งเปลี่ยนรายการทั้งหมดเป็นภาษาที่ต้องการ
รุ่นนี้จะตรวจสอบแต่ละรูปร่างซ้ำ ๆ ว่าเป็นประเภทกลุ่ม การทดลองบางอย่างแสดงให้เห็นว่าmsoGroup
และmsoSmartArt
เป็นประเภทกลุ่ม - อย่าลังเลที่จะเพิ่มลงในรายการนั้นหากคุณพบว่ามีรูปร่างประเภทอื่นที่สามารถเก็บวัตถุข้อความได้
Sub ChangeProofingLanguageToEnglish()
Dim j As Long, k As Long
Dim languageID As MsoLanguageID
'Set this to your preferred language
languageID = msoLanguageIDEnglishUK
For j = 1 To ActivePresentation.Slides.Count
For k = 1 To ActivePresentation.Slides(j).Shapes.Count
ChangeAllSubShapes ActivePresentation.Slides(j).Shapes(k), _
languageID
Next k
Next j
End Sub
Sub ChangeAllSubShapes(targetShape As shape, languageID As MsoLanguageID)
Dim i As Long
If targetShape.HasTextFrame Then
targetShape.TextFrame.TextRange.languageID = languageID
End If
Select Case targetShape.Type
Case msoGroup, msoSmartArt
For i = 1 To targetShape.GroupItems.Count
ChangeAllSubShapes targetShape.GroupItems.Item(i), languageID
Next i
End Select
End Sub
Compile error: Method or data member not found
ขึ้นอยู่กับคำตอบของ Inigo, Duncan, Maria และ DomDev สิ่งนี้ใช้ได้กับรูปร่างตารางกลุ่ม SmartArt ทั้งในปัจจุบันและอนาคต:
Sub ChangeProofingLanguageToFrench()
Dim j, k As Integer
Dim languageID As MsoLanguageID
'Set this to your preferred language
languageID = msoLanguageIDFrench
'Loop all the slides in the document, and change the language
For j = 1 To ActivePresentation.Slides.Count
For k = 1 To ActivePresentation.Slides(j).Shapes.Count
ChangeAllSubShapes ActivePresentation.Slides(j).Shapes(k), languageID
Next k
Next j
'Loop all the master slides, and change the language
For j = 1 To ActivePresentation.SlideMaster.CustomLayouts.Count
For k = 1 To ActivePresentation.SlideMaster.CustomLayouts(j).Shapes.Count
ChangeAllSubShapes ActivePresentation.SlideMaster.CustomLayouts(j).Shapes(k), languageID
Next k
Next j
'Change the default presentation language, so that all new slides respect the new language
ActivePresentation.DefaultLanguageID = languageID
End Sub
Sub ChangeAllSubShapes(targetShape As Shape, languageID As MsoLanguageID)
Dim i As Integer, r As Integer, c As Integer
If targetShape.HasTextFrame Then
targetShape.TextFrame.TextRange.languageID = languageID
End If
If targetShape.HasTable Then
For r = 1 To targetShape.Table.Rows.Count
For c = 1 To targetShape.Table.Columns.Count
targetShape.Table.Cell(r, c).Shape.TextFrame.TextRange.languageID = languageID
Next
Next
End If
Select Case targetShape.Type
Case msoGroup, msoSmartArt
For i = 1 To targetShape.GroupItems.Count
ChangeAllSubShapes targetShape.GroupItems.Item(i), languageID
Next i
End Select
End Sub
Compile error: Method or data member not found
ผมได้รับ: มีคำแนะนำใดบ้าง? .DefaultLanguageID
มันดูเหมือนว่าจะเน้น
เวอร์ชั่นของ Duncan ใช้งานได้ดีสำหรับทุกอย่างยกเว้นโต๊ะ ฉันพบรหัสอื่นซึ่งดูเหมือนว่าจะทำงานกับตาราง: https://stackoverflow.com/questions/4735765/powerpoint-2007-set-language-on-tables-charts-etc-that-contain-text
Public Sub changeLanguage() On Error Resume Next Dim gi As GroupShapes '<-this was added. used below 'lang = "English" lang = "Norwegian" 'Determine language selected If lang = "English" Then lang = msoLanguageIDEnglishUK ElseIf lang = "Norwegian" Then lang = msoLanguageIDNorwegianBokmol End If 'Set default language in application ActivePresentation.DefaultLanguageID = lang 'Set language in each textbox in each slide For Each oSlide In ActivePresentation.Slides Dim oShape As Shape For Each oShape In oSlide.Shapes 'Check first if it is a table If oShape.HasTable Then For r = 1 To oShape.Table.Rows.Count For c = 1 To oShape.Table.Columns.Count oShape.Table.Cell(r, c).Shape.TextFrame.TextRange.LanguageID = lang Next Next Else Set gi = oShape.GroupItems 'Check if it is a group of shapes If Not gi Is Nothing Then If oShape.GroupItems.Count > 0 Then For i = 0 To oShape.GroupItems.Count - 1 oShape.GroupItems(i).TextFrame.TextRange.LanguageID = lang Next End If 'it's none of the above, it's just a simple shape, change the language ID Else oShape.TextFrame.TextRange.LanguageID = lang End If End If Next Next End Sub
นอกจากคำตอบจากMastergalenและเพื่อแสดงความคิดเห็นเกี่ยวกับข้อความประเภทใหม่:
หากคุณจะสังเกตเห็นว่าภาษานั้นจะเปลี่ยนกลับโดยอัตโนมัติทุกครั้งที่คุณเริ่มพิมพ์ข้อความใหม่ (ซึ่งน่ารำคาญมาก) คุณต้องเปลี่ยนภาษาเริ่มต้นปัจจุบันสำหรับ PowerPoint:
Windows Taskbar
(ใช่ไม่ใช่ใน PowerPoint จริง) ตรวจสอบว่าLanguage bar
มองเห็นได้หรือไม่
Control Panel > Region and Language > Keyboards and Languages
ถ้าไม่ไป คลิกChange keybords...
เปลี่ยนเป็นLanguage bar
แท็บและตรวจสอบDocked in the taskbar
ตัวเลือก (นี่มาจาก Win7 ดังนั้นอาจแตกต่างจากเวอร์ชั่นอื่นเล็กน้อย)Language bar
แถบงานในคลิกรหัสภาษาและเปลี่ยนเป็น EN (หากคุณต้องการใช้ภาษาอังกฤษใน PowerPoint ในปัจจุบัน) จากนี้ไปข้อความใหม่ทั้งหมดใน PowerPoint จะเป็นภาษาที่เลือก :-)En
ที่แถบงานและเลือกSettings..
คุณจะเห็นในภาษาที่ติดตั้งภาษาเยอรมัน (DE) และภาษาอังกฤษ (En) หากคุณขยายภาษาอังกฤษจะมีKeyboards
รายการอยู่ในรายการขยายแป้นพิมพ์และเพิ่มแป้นพิมพ์ภาษาเยอรมันที่คุณต้องการ ด้วย ผมไม่ได้ลอง แต่ควรจะทำงานในทฤษฎี ;-)
ฉันเพิ่มเข้ามาในปี 2557 สำหรับตัวเองซึ่งยังใช้งานได้ดีใน PowerPoint 2016 https://github.com/wobba/officeaddin/releases/tag/v1.0.1
มันสแกนหาภาษาที่ใช้แล้วและอนุญาตให้คุณเปลี่ยนทั้งหมดในคราวเดียว