私は多数のテキストボックスがあるそれぞれのスライドを含むPowerPointプレゼンテーションを受け取りました。プレゼンテーションは英語で書かれていますが、スペルチェックの言語はカナダフランス語に設定されています。言語を英語に変更しようとしていますが、すべてのスライドを選択して[言語]ダイアログボックスで新しい要素を選択しても、テキストボックスの言語は変わりません。だから私はスライドでテキストボックスを選択し、それから言語を個別に変更することでスライドさせなければなりません。
これを行うより良い方法はありますか?
私がインストールしたPowerPointのバージョンは2002 SP3です。
このスレッド は私のために働いた答えを含んでいます。
私が従った手順は次のとおりです。
このコードを右側のパネルに貼り付けて、マクロを保存します。
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 ボタン(それ以降のバージョンでは、右クリックでこれを確認できます)。
仕事は終わった。
同様に、フォント、色など、他のものも変更できます。もちろん、スライドマスターを変更することでこれを行うことができますが、多くの編集者がいるプレゼンテーションには、 'ハード'フォーマットセットがたくさんあります。基礎となるマスターから逸脱し、一貫性を保つために再設定が必要です。個々のスライドをマスタースタイルにリセットすることもできますが、プレースホルダも移動する可能性があります。これは、状況によっては望ましくない場合があります。
私が手作業でそれを行ったか、または1回限りのマクロを使用した多くのプレゼンテーションの後、私はついにそれを壊して適切なPowerPointアドインにしました。
私のWebサイトにアップロードしました: PowerPoint LanguageFixer
それは世話をします:
テキストボックスの1つを希望の言語に設定し、それを選択してボタンをクリックするだけです。
状況に応じて2つの選択肢があります。
状況1:Officeの元のコピーが、カナダのフランス語ベースのインストールメディアからインストールされた。
デフォルトの言語を英語に設定できますが、コア機能はインストールメディアの母国語を使用します。
唯一の解決策は、カナダのフランス語版をアンインストールし、英語ベースのインストールメディアからインストールするか、プレゼンテーション全体を新しいドキュメントにコピーアンドペーストして再フォーマットすることです。
。
状況2:すべてが英語のようですが、限られた状況では外国語が表示されます。
この状況では、Office 2002の修復手順は次のとおりです。
これが役に立つことを願っています。
私はドイツのPowerPointで作られたプレゼンテーションと手動で英語に翻訳されているのと同じ問題を抱えていました。問題は、言語設定が本質的に各テキストボックス要素に独自に適用されるフォーマットであるということです。
私はどんな便利な解決策も知りません - 私はミスマッチで生きるか、各スライドの個々のテキストボックスの言語の「フォーマット」を手動で変更しなければなりませんでした。面白くないので、たいてい私は一緒に住んでいます。
Leonardo によって投稿されたコードは単純で一般的に効果的ですが、グループ内のShape
sには影響しません。より一般的なコードでもその場合に対処するために再帰を使用します(Leonardoによるコードと同じスレッドにある here からわずかに変更されています)。
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