Jak zmienić język wszystkich slajdów Powerpoint na raz?

151

Chociaż ten wątek jest dość stary, Microsoft nie dostarczył żadnego znanego mi rozwiązania. Sugeruję inne podejście dla użytkowników komputerów Mac: otwórz prezentację w Keynote, zmień język pisowni i ewentualnie edytuj całą prezentację, a następnie wyeksportuj ją do programu PowerPoint.

liamzebedee
źródło
1
Wydaje się, że najnowsza wersja programu PowerPoint jest szczególnie błędna pod tym względem. Mam pole tekstowe, w którym zmieniłem język całego tekstu na język A. (Domyślnym językiem jest B.) Więc kiedy zaczynam pisać w tym polu tekstowym, język automatycznie zmienia się na B. Pomyślałem, że może zmienić domyślny język pomaga (próbowałem już wszystkiego innego), ale nie. Teraz domyślnym językiem jest A, językiem wszystkich innych tekstów w polu tekstowym jest A (i zrestartowałem PP), ale cały nowy tekst wciąż pojawia się jako B. Więc moje jedyne pozostałe pytanie brzmi: czy jest sposób na zmianę korekty całkowicie wyłączone?
lebatsnok
Tak, jest sposób na sprawdzenie sprawdzania pisowni: support.microsoft.com/en-us/help/937422/… - rozwiązał mój problem!
lebatsnok

Odpowiedzi:

165

Aby łatwo zmienić język całego programu PowerPoint, otwórz kartę Widok i wybierz Widok konspektu .

Teraz naciśnij

  • Ctrl+, Aaby zaznaczyć wszystko.
  • NarzędziaJęzyk → Wybierz język, który chcesz ustawić.

Podobnie, gdy masz już wszystko wybrane, możesz zmieniać inne rzeczy, takie jak czcionki, kolory itp. Chociaż oczywiście w wielu przypadkach lepiej to zrobić, zmieniając suwak, prezentacja z wieloma edytorami może mieć wiele „twardych” zestawów formatujących, które odbiega od głównego wzorca i wymaga resetu, aby zachować spójność. Możesz także zresetować poszczególne slajdy do stylu głównego, ale może to również powodować przesuwanie symboli zastępczych, co może być niepożądane w niektórych sytuacjach.

PowerPoint 2013

  • WidokZarys → wybierz wszystkie slajdy (w menu po lewej) za pomocą Ctrl+ A.
  • RecenzjaJęzykUstaw język sprawdzania ... → Wybierz język, który chcesz ustawić.

Jeśli chodzi o mnie - konieczne było ponowne uruchomienie programu PowerPoint . Prawdopodobnie dlatego, że zmieniłem także język edycji :

  • RecenzjaJęzykUstaw język sprawdzania ...Preferencje językoweWybierz języki edycji .
Mastergalen
źródło
31
Dziękujemy za odpowiedź, ale po zmianie języka nowo wpisany tekst jest nadal w poprzednim języku (domyślnym). Ponadto, jeśli przejdziesz do slajdów głównych, wybierz slajd , zauważysz, że język na pasku językowym jest nadal domyślny, a menu do jego zmiany jest wyszarzone. Szaleję, że Microsoft nie rozwiązał tego przez tyle lat.
Endrju
1
Niesamowite! Chociaż nie jest idealny, z pewnością pomaga. Zgadzam się z @Endrju, dlaczego nie zostało to jeszcze naprawione ?!
Mike
1
Dla
przypomnienia
2
Powerpoint jest po prostu szokująco zły, prawda? Właściwie tęsknię za korzystaniem z otwartego biura, gdy mam takie problemy. Wrócę do biura, gdy tylko będą wspierać zapisywanie w filmie.
mjaggard,
2
Głównym ograniczeniem tego jest to, że jeśli ktoś w swojej nieskończonej mądrości utworzy niestandardowe pole tekstowe zamiast używać odpowiednich układów Tytuł + Treść, to po prostu nie zadziała.
Lilienthal
34

Używając Powerpoint 2010 otworzyłem menu konspektu -

zakładka konspektu

Zaznaczam cały tekst (Ctrl + A), otworzyłem menu języka i ustawiłem język sprawdzania

opcja językowa

I zadziałało!

Menu języka znajduje się na karcie wstążki Recenzja (po karcie Pokaz slajdów i nie jest widoczne na zrzucie ekranu).

liamzebedee
źródło
4
Działa tylko dla jednego slajdu
Helge Klein
9
Działa to w przypadku podstawowych układów slajdów. Nie zmieni języka tekstu w polach tekstowych ani zagnieżdżonego w innych kształtach.
Duncan Jones,
Działa również na pakiecie Office 2007.
Alfredo Osorio
Pracował również na Office Mac.
Jim McKeeth,
23

Istniejące odpowiedzi działają na tekst obecny w konspekcie. Niestety w moim przypadku nie obejmowało to znacznej części tekstu, w tym rysunków, tabel itp.

To makro rozwiązało problem dla mnie:

 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”, który jest używany w powyższym makrze, można zastąpić dowolnym pożądanym językiem. Pełna lista języków znajduje się w tym artykule

(Podziękowania należą się Ganeshowi Kumarowi, który zamieścił tutaj oryginalne makro . Dodałem obsługę pierwszego poziomu grupowania kształtów. W celu dalszego ulepszenia makra można go rekurencyjnie szukać grup zawierających inne grupy itp.)

Inigo
źródło
+1 Dobry początek. Zobacz moją odpowiedź na w pełni rekurencyjną wersję opartą na tej odpowiedzi.
Duncan Jones,
20

Poprawiłem odpowiedź Inigo, aby zapewnić wersję rekurencyjną, która zmienia wszystkie elementy na pożądany język.

Ta wersja bada rekurencyjnie każdy kształt, który jest typem grupy. Niektóre eksperymenty sugerują, że msoGroupi msoSmartArtsą to typy grup - możesz dodać do tej listy, jeśli znajdziesz inne typy kształtów, które mogą pomieścić obiekty tekstowe.

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
Duncan Jones
źródło
1
Podczas uruchamiania tego w programie PowerPoint 16.10 na OSX otrzymuję:Compile error: Method or data member not found
Etienne Low-Décarie
10

Na podstawie odpowiedzi Inigo, Duncana, Marii i DomDev działa to w przypadku kształtów, tabel, grup, SmartArt, teraz iw przyszłości:

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
trójkołowy
źródło
Co do innych rozwiązań, na kiedy to uruchomiony w programie PowerPoint 16.10 na OSX, otrzymuję: Compile error: Method or data member not found. Jakieś sugerowane rozwiązania? Wydaje się podkreślać .DefaultLanguageID.
Etienne Low-Décarie
@ EtienneLow-Décarie: Interfejs API mógł ulec zmianie w programie PowerPoint 16; Nie mam, więc nie mogę sprawdzić, przepraszam.
tricasse
Pracuje dla mnie w Powerpoint 2016 na Windows 7 (dokładna wersja MS Office jest 16.0.11029.20108)
Christopher K.
Doskonały! Jedyne ulepszenie, jakie mogłem wymyślić, to zmiana języka sekcji notatek slajdów :)
Marcus Mangelsdorf,
7

Wersja Duncan działa dobrze do wszystkiego oprócz tabel. Znalazłem inny kod, który wydaje się również działać z tabelami: https://stackoverflow.com/questions/4735765/powerpoint-2007-set-language-on-tables-charts-etc-that-contains-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
Maria
źródło
5

Oprócz odpowiedzi udzielonej przez Mastergalen i odpowiedzi na komentarze dotyczące nowego tekstu:

Jeśli zauważysz, że język ten zmieni się automatycznie za każdym razem, gdy zaczniesz pisać nowy tekst (co jest bardzo denerwujące), musisz zmienić bieżący domyślny język programu PowerPoint:

  • upewnij się, że okno programu PowerPoint jest aktywnym oknem
  • w Windows Taskbar(tak, właściwie nie w programie PowerPoint) sprawdź, czy Language barjest widoczny,
    • jeśli nie, przejdź do Control Panel > Region and Language > Keyboards and Languages. Kliknij Change keybords..., przejdź do Language barzakładki i zaznacz Docked in the taskbaropcję. (pochodzi z Win7, więc może być nieco inaczej w innych wersjach).
  • teraz kluczowa akcja - Language barna pasku zadań kliknij kod języka i przełącz się na EN (jeśli chcesz obecnie używać języka angielskiego w programie PowerPoint). Od teraz cały nowy tekst w programie PowerPoint będzie w wybranym języku :-)
  • jeśli chcesz pisać w swoim oryginalnym języku, po prostu zmień go z powrotem.
Gaz
źródło
1
Boże, dlaczego mieliby robić coś takiego ?! Dziękuję, działało idealnie.
Thibault D.
1
Dokładnie! należy również dodać do zaakceptowanej odpowiedzi.
M. Abdelhafid
1
Ale to także zmienia układ klawiatury, prawda? ... Chcę pisać po angielsku, ale naprawdę chcę zachować niemiecki układ klawiatury ...
Johannes S.,
2
@JohannesS. Jeśli klikniesz prawym przyciskiem myszy Enpasek zadań i wybierzesz Settings.., zobaczysz w Zainstalowane języki niemiecki (DE) i angielski (En), jeśli rozwiniesz angielski, pojawi się na Keyboardsliście, rozwiniesz Klawiatury i dodasz preferowaną niemiecką klawiaturę, prawdopodobnie usuniesz angielską również. Nie próbowałem tego, ale powinienem pracować w teorii ;-)
Gas
Czekaj, więc muszę zmienić język klawiatury, jeśli chcę mieć inny język sprawdzania? To głupie.
Matěj Račinský