Trabalhar com documentos parciais

Quando abre uma apresentação com conteúdo de tamanho grande, o PowerPoint pode servir o documento em partes como documentos parciais. Isto permite-lhe abrir, editar e colaborar em documentos rapidamente, enquanto as partes de multimédia maiores (por exemplo, vídeos) continuam a ser carregadas em segundo plano. Da mesma forma, uma vez que os suportes de dados são processados separadamente do resto do documento, a colaboração é mais suave quando os suportes de dados são inseridos durante uma sessão de colaboração.

Uma vez que determinado conteúdo pode ser diferido inicialmente, algumas ações só podem ser tomadas depois de o conteúdo diferido ser carregado. Além disso, existem determinadas ações, como Guardar Como, Exportar para Vídeo, etc. que não funcionarão até que todos os conteúdos diferidos sejam transferidos. Se iniciar uma destas operações, o PowerPoint apresentará a IU a informá-lo sobre o progresso da transferência, mas isso não é possível para operações programáticas. Se tentar chamar programaticamente uma API para executar uma ação enquanto o conteúdo ainda está a ser transferido, este falhará.

Run-time error '-2147188128 (80048260)':
<object> (unknown member) : This method isn't supported until the presentation is fully downloaded. Visit this URL for more information: https://go.microsoft.com/fwlink/?linkid=2172228

Compreender o estado de transferência total

Para compreender se uma apresentação é totalmente transferida programaticamente, pode consultar a propriedade Apresentação.IsFullyDownloaded antes de chamar qualquer uma das APIs afetadas.

If ActivePresentation.IsFullyDownloaded Then
    MsgBox "Presentation download is complete."
Else
    MsgBox "PowerPoint is still downloading the presentation."
End If

Tratamento de erros

Também pode adicionar algum processamento de erros para capturar a falha e repetir a operação assim que a apresentação for totalmente transferida. Se o valor de erro for -2147188128 ou 0x80048260, a operação falhou porque a apresentação não foi totalmente transferida. Utilize Err.Number como chave para identificar estas falhas, conforme mostrado no exemplo seguinte.

Sub TestCopySlide()
    On Error GoTo eh    
    ActivePresentation.Slides(1).Copy    
    Exit Sub
eh:
    If Err.Number = -2147188128 Then
        MsgBox "Cannot copy because the presentation is not fully downloaded."
    Else
        MsgBox "Failure is due to a reason other than incomplete download: " & Err.Description.
    End If
    Debug.Print Err.Number, Err.Description
End Sub

APIs afetadas

Segue-se uma lista de chamadas à API OM afetadas que podem devolver o código de erro:

Nome
Presentation.Export
Presentation.ExportAsFixedFormat
Presentation.ExportAsFixedFormat2
Presentation.ExportAsFixedFormat3
Presentation.SaveAs
Presentation.SaveCopyAs
Presentation.SaveCopyAs2
Presentation.Password
Presentation.WritePassword
Selection.Copy
Selection.Cut
Shape.Copy
Shape.Cut
ShapeRange.Cut
ShapeRange.Copy
Shapes.Paste
Shapes.PasteSpecial
Slide.Copy
Slide.Cut
Slide.Export
SlideRange.Copy
SlideRange.Cut
SlideRange.Export
Slides.Paste
CustomLayouts.Paste
Ver.Colar
View.PasteSpecial
MediaFormat.Resample
MediaFormat.ResampleFromProfile
Player.Play

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.