ナレッジベース KB0209

PowerPoint 2013&2016でPowerPointファイルを修復できない

問題

PowerPointは破損したPowerPointファイルを修復できません。

説明

PowerPointによる修復前にプログラム コードを使用してスライドにアクセスすると、PowerPointファイルを修復できません。ただし、think-cellと他のほとんどのアドインは、ファイルを開いた際にスライドにアクセスする必要があります。ファイルの破損をアドインが把握することはできません。

この件については Microsoft に報告していますが、今のところ Microsoft はこの問題を解決することを決定していません。 貴社にMicrosoft Officeサポートの連絡先があり、この問題についてMicrosoftに連絡して修正プログラムを要請なさりたい場合は、Microsoftケース番号115040112590053を使用してください。このエラーは think-cell なしでも再現できます。

think-cellを使用しないで再現

修復が終了する前に何らかのコードで破損したスライドにアクセスすると、think-cellなしでもエラーが再現されます。以下の再現で、PresentationOpenイベント ハンドラーは、ファイルが開いた際(すなわち修復前)、あらゆるスライドにアクセスするコードを読み出します。

  1. 新しい空のファイルでPowerPoint 2013または2016を開きます。
  2. PowerPointでInsert > think-cell > Tools Tools Menu icon. > Deactivate think-cellにアクセスします。
  3. Alt + F11を押して、Microsoft Visual Basic for Applicationsを開きます。
  4. このコードを Class Module として追加し、名前を付けます。cEventClass

    Public WithEvents PPTEvent As Application
    
    Private Sub Class_Initialize()
        MsgBox "EventHandler is now active."
    End Sub
    
    Private Sub PPTEvent_PresentationOpen(ByVal pres As Presentation)
        On Error GoTo errHandle:
        
        Debug.Print "open file: " & pres.Name
        Dim i As Integer
        
        For i = 1 To pres.Slides.Count
            Debug.Print "Slide " & pres.Slides.Item(i).SlideNumber; " / " _ 
    	& pres.Slides.Count
        Next i
        
        Exit Sub
        
    errHandle:
        Debug.Print ("VBA Error: " & Err.Number & " " & Err.Description) & vbCr
    End Sub

  5. 以下のコードをModuleとして追加します。

    Dim cPPTObject As New cEventClass
    
    Sub Initialize_Eventhandler()
        Set cPPTObject.PPTEvent = Application
        Debug.Print "**** EventHandler active ****"
    End Sub

  6. PowerPointプレゼンテーション ウィンドウでAlt + F8を押し、[マクロ] ウィンドウを開きます。
  7. Initialize_Eventhandlerマクロを実行します。
  8. 破損したPowerPointファイルを開き、修復を試みます。

この問題はMicrosoft Office 2010では発生しません。

解決策

Microsoftがこのバグを修正するまで、回避策として一時的にthink-cellを非アクティブ化できます。

  1. PowerPointでthink-cellを非アクティブ化します。Insert > think-cell > Tools Tools Menu icon. > Deactivate think-cell
  2. 破損したファイルを開き、修復します。
  3. PowerPointでthink-cellを再びアクティブにしてください:[挿入][think-cell][アクティブ化]

共有する