2016-03-28 36 views
0

Bir Shape and Slide nesnesini geçirdiğim bir Powerpoint VBA işlevi geliştirdim.PowerPoint VBA - Resmi bir sürgüye kopyalama

Bu işlev, içinde LOGO içeren bir şekil buluyorsa, bu şeklin işlevin geçirdiğim şekliyle değiştirilmesini sağlar.

Fonksiyon 2016.

herkes bunun için geçici bir çözüm önermek misiniz mükemmel ofis 2013 tarihinde ancak Ofisi çalışır?

Public Sub AddLogo_ONE(shLogo As Shape, oSlide As PowerPoint.Slide) 
    Dim sh As Shape 

    For Each sh In oSlide.Shapes 
     If sh.HasTextFrame Then 
      If UCase(sh.TextFrame2.TextRange.Text) = "LOGO" Then 
       oSlide.Select 
       DoEvents: DoEvents 
       shLogo.Copy 
       With oSlide.Shapes.Paste 
        .LockAspectRatio = msoFalse 
        .Left = sh.Left 
        .Top = sh.Top - ((.Height - sh.Height)/2) 
        .AlternativeText = "LogoMacro" 
        sh.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 255, 255) 
       End With 
       Exit For 
      End If 
     End If 
    Next 
End Sub 

Aşağıda ben Powerpoint 2016 olsun hata iletisi: VBA/Pano/Winos ile korkunç makine bağımlı zamanlama sorunu var enter image description here

cevap

1

. WinAPI'leri kullanarak bir Paste işlemi ile devam etmeden önce bir PowerPoint türü içeriğin kontrol edilmesini ve beklemesini beklemek için bile, bunun için akıllıca bir çözüm geliştirmeye çalışarak saatler geçirdim.

İşlerin, VBA'yı bir gecikmeyle yavaşlatmak olduğunu bulduğum tek çözüm. Hala makine bağımlı olduğu gibi kötü bir çözüm. Bu benim işlevi kullanmak edilir:

shLogo.Copy 
Delay 1, True 
With oSlide.Shapes.Paste 
+0

şu şekildedir: Eğer bu ararsanız

Public Sub Delay(Seconds As Single, Optional DoAppEvents As Boolean) Dim TimeNow As Long TimeNow = Timer Do While Timer < TimeNow + Seconds If DoAppEvents = True Then DoEvents Loop End Sub 

, bu sorunu çözmek gerekir (bozulana kadar 1 saniyeden itibaren süresini azaltmak ve yeniden çift!) Teşekkürler! Müşteri tarafında kontrol edecek ve sizi güncelleyecektir. – Tejas