Zmień język sprawdzania pisowni w prezentacji PowerPoint

42

Otrzymałem prezentację PowerPoint z dziesiątkami slajdów, każda z kilkoma polami tekstowymi. Chociaż prezentacja jest napisana w języku angielskim, język sprawdzania pisowni jest ustawiony na kanadyjski francuski. Próbuję zmienić język na angielski, ale nawet jeśli zaznaczę wszystkie slajdy i wybiorę nowy element w oknie dialogowym Język, język pól tekstowych pozostanie taki sam. Więc muszę przesuwać slajd po slajdzie, zaznaczając pola tekstowe, a następnie indywidualnie zmieniając język.

Czy jest na to lepszy sposób?

Zainstalowana wersja programu PowerPoint to SP3 z 2002 roku.

Leonardo
źródło
Nie mogę dodać odpowiedzi (pomimo wystarczającej liczby powtórzeń). Dla użytkowników komputerów Mac: macscripter.net/viewtopic.php?id=38622 zapewnia niesamowity skrypt Apple, który można modyfikować do wielu zastosowań.
Etienne Low-Décarie
Oto streszczenie
Etienne Low-Décarie

Odpowiedzi:

34

Wiem, że odpowiedź została już zaakceptowana (której dałem +1, ponieważ działa i jest dobrze napisana), ale dla niektórych osób pomysł tworzenia, zapisywania, używania makra może być zbyt przerażający (lub mogą mieć ustawienia zabezpieczeń w miejsce, w którym trudno to osiągnąć). Tak więc łatwiejszym rozwiązaniem jest skorzystanie z normalnej wbudowanej funkcjonalności. Sztuczka polega na tym, aby móc zaznaczyć wszystkie obiekty na wszystkich slajdach jednocześnie, a nie same slajdy, i łatwo to osiągnąć w widoku Zarys (niestety funkcja niewykorzystana, ale świetna do reorganizacji talii slajdów, promowania i obniżania poziomu całe kawałki, np. pociski> nowe slajdy lub odwrotnie).

Nie mam programu PowerPoint 2002 („XP”), więc nie jestem pewien, czy musisz postępować zgodnie z instrukcjami dla 2000, czy 2003, więc omówię oba tutaj:

  • W PP 2000 : Przejdź do widoku konspektu, który jest drugą ikoną od lewej w lewym dolnym rogu ekranu (wygląda jak linie z wcięciami).
  • Począwszy od PP 2003 : Przejdź do widoku „normalnego” (układ trzech okien) i u góry nawigatora slajdów wybierz „kontur” zamiast „slajdów”

W starszych wersjach, upewnij się, że masz pasek narzędzi Tworzenie konspektu widoczny ( View> Toolbars> Outlining) i kliknąć Expand allprzycisk (późniejsze wersje pozwalają uzyskać na to poprzez kliknięcie prawym przyciskiem myszy).

  • Ctrl-A wybrać wszystko.
  • Tools>> LanguageWybierz język, który chcesz ustawić.
  • (od Powerpoint 2013) REVIEW> Language> UST.JĘZYKA Proofing

Zadanie wykonane.

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.

AdamV
źródło
Krótka uwaga: być może należy pogrubić następujące zdanie, aby rozwiązanie było natychmiast jasne: „Sztuką jest wybranie wszystkich obiektów na wszystkich slajdach jednocześnie, a nie samych slajdów, i można to łatwo osiągnąć w widoku konspektu ”
Rabarberski
2
Dzięki AdamV, świetna odpowiedź! Problem z tym podejściem polega jednak na tym, że w zależności od sposobu dodania pól tekstowych do slajdu mogą nie być wyświetlane w widoku konspektu. Tak było w przypadku prawie każdego obiektu w prezentacji, który musiałem naprawić.
Leonardo
Tak, myślę, że jeśli ludzie dodają wiele niezależnych pól tekstowych, należy je wybrać przy użyciu metody takiej jak opublikowane pierwotne makro.
AdamV
Dla mnie działało to tylko na istniejącym tekście w programie PowerPoint 2010. W przypadku nowo dodanego tekstu język nadal się zmieniał w niektórych przypadkach.
Pieter
To zdecydowanie najczystszy sposób radzenia sobie z tym. Działa również w wersji 2013.
GoTTimw
18

Ten wątek zawiera odpowiedź, która zadziałała dla mnie.

Kroki, które wykonałem to:

  1. Utwórz nowe makro:
    1.1. Przejdź do Narzędzia, Makro, Edytor Visual Basic.
    1.2 Wstaw nowy pusty moduł, wybierając Wstaw, Moduł.
  2. Wklej ten kod w prawym panelu i zapisz makro:

    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
    

    msoLanguageIDEnglishAUSmożna zastąpić dowolnym wybranym językiem. Pełna lista języków znajduje się tutaj .

  3. Uruchom makro (naciskając klawisz F5 w edytorze lub wybierając Narzędzia, Makro, Makra, Zmień język sprawdzania pisowni i klikając Uruchom).

Następnie wszystkie elementy tekstu w prezentacji będą miały nowy język pisowni.

Leonardo
źródło
1
Ten kod nie wpłynie na Shapes w grupach. Bardziej ogólny kod znajduje się na stronie superuser.com/a/1119420/245595
sancho.s Przywróć Monikę
3

Po wielu prezentacjach, w których zrobiłem to ręcznie lub użyłem jednorazowego makra, w końcu złamałem i utworzyłem odpowiedni dodatek do programu PowerPoint.

Przesłałem go na moją stronę internetową: PowerPoint LanguageFixer

Dba o:

  • ustawienie domyślnego języka
  • wszystkie kształty z ramkami tekstowymi
  • ramki tekstowe w zgrupowanych kształtach (w miarę możliwości)
  • tekst w tabelach
  • rzeczy na slajdzie / notatce / materiale głównym

Po prostu ustaw jedno z pól tekstowych na żądany język, wybierz go i kliknij przycisk.

Jan Schejbal
źródło
1

Oto dwie opcje w zależności od sytuacji:


Sytuacja 1: Oryginalna kopia pakietu Office została zainstalowana z nośnika instalacyjnego opartego na języku kanadyjskim francuskim.

Będziesz mógł ustawić domyślny język na angielski, ale podstawowe funkcje będą używać języka ojczystego nośnika instalacyjnego.

Jedyną poprawką jest odinstalowanie wersji kanadyjsko-francuskiej i instalacja z nośnika instalacyjnego w języku angielskim lub skopiowanie / wklejenie całej prezentacji do nowego dokumentu i ponowne sformatowanie.

.


Sytuacja 2: Wszystko wydaje się być angielskim, ale w ograniczonych okolicznościach pojawiają się języki obce.

W tej sytuacji oto instrukcje naprawy pakietu Office 2002:

  1. Kliknij menu Start
  2. Wskaż Programy
  3. Wskaż Narzędzia Microsoft Office
  4. Kliknij Ustawienia języka Microsoft Office XP.
  5. Kliknij kartę Włączone języki.
  6. Przejdź do domyślnej wersji pakietu Microsoft Office
  7. Wybierz żądany język
  8. Kliknij OK. Pojawi się komunikat informujący, jakie zmiany zostaną wprowadzone.
  9. Kliknij Kontynuuj

Mam nadzieję, że to pomoże.

pjemmert
źródło
Dzięki za odpowiedź! Nie była to jednak żadna z tych sytuacji. Dzieje się tak, ponieważ każde pole tekstowe może być ustawione na inny język do sprawdzania pisowni, aw tym konkretnym scenariuszu wszystkie elementy miały niewłaściwy język. Domyślnym językiem w systemie (i instalacji biurowej) jest angielski.
Leonardo
0

Miałem te same problemy z prezentacjami wykonanymi za pomocą niemieckiego programu PowerPoint i tłumaczeniem ręcznym na angielski. Problem polega na tym, że ustawienie języka jest zasadniczo formatowaniem, które jest stosowane do każdego elementu pola tekstowego osobno.

Nie znam żadnego wygodnego rozwiązania - musiałem albo żyć z niedopasowaniem, albo ręcznie zmieniać „format” językowy każdego pola tekstowego na każdym slajdzie. Nie fajnie, więc głównie z tym mieszkam.

Torben Gundtofte-Bruun
źródło
0

Kod opublikowany przez Leonardo jest prosty i ogólnie skuteczny, ale nie wpłynie na Shapes w grupach. Bardziej ogólny kod używa rekurencji również do obsługi tego przypadku (nieco zmieniony z tego miejsca , który znajduje się w tym samym wątku, co kod Leonarda):

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
sancho.s Przywróć Monikę
źródło