title: Turn off screenupdating for Powerpoint
body: <p>I am writing a script that loops through a folder and creates graphs from some criteria, and then exports these to powerpoint. At the moment, creating 130 graphs takes 290 seconds, of which 286 are used by powerpoint. I suspect a major reason for this is not being able to turn off screenupdating for powerpoint. I have tried using code from here <a href="http://skp.mvps.org/ppt00033.htm" rel="noreferrer">http://skp.mvps.org/ppt00033.htm</a> to solve this. However, I'm not noticing any effect. While I can alt-tab and keep powerpoint in the background, when switching to Powerpoint all the changes are being shown and you can basically see how it slows down the program. Anybody knows how I am to use this code? Should it be in a class module, should I do anything else or what am I doing wrong? Below is the code-snippet I have borrowed and an example of how I try to call it:</p>
  
  <pre><code>Option Explicit
  ' UserDefined Error codes
  Const ERR_NO_WINDOW_HANDLE As Long = 1000
  Const ERR_WINDOW_LOCK_FAIL As Long = 1001
  Const ERR_VERSION_NOT_SUPPORTED As Long = 1002
  
  ' API declarations for FindWindow() &amp; LockWindowUpdate()
   ' Use FindWindow API to locate the PowerPoint handle.
  Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long
  
  ' Use LockWindowUpdate to prevent/enable window refresh
  Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
  
  ' Use UpdateWindow to force a refresh of the PowerPoint window
  Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
  
  Property Let ScreenUpdating(State As Boolean)
  
  Static hwnd As Long
  Dim VersionNo As String
  ' Get Version Number
      If State = False Then
          VersionNo = Left(Application.Version, InStr(1, Application.Version, ".") - 1)
          'Get handle to the main application window using ClassName
          Select Case VersionNo
          Case "8"
          ' For PPT97:
              hwnd = FindWindow("PP97FrameClass", 0&amp;)
          Case "9"
          ' For PPT2K:
              hwnd = FindWindow("PP9FrameClass", 0&amp;)
          Case "10"
          ' For XP:
          hwnd = FindWindow("PP10FrameClass", 0&amp;)
          Case "11"
          ' For 2003:
          hwnd = FindWindow("PP11FrameClass", 0&amp;)
          Case "12"
          ' For 2007:
          hwnd = FindWindow("PP12FrameClass", 0&amp;)
          Case "14"
          ' For 2010:
          hwnd = FindWindow("PPTFrameClass", 0&amp;)
          Case Else
          Err.Raise Number:=vbObjectError + ERR_VERSION_NOT_SUPPORTED, _
          Description:="Newer version."
          Exit Property
          End Select
  
          If hwnd = 0 Then
          Err.Raise Number:=vbObjectError + ERR_NO_WINDOW_HANDLE, _
          Description:="Unable to get the PowerPoint Window handle"
          Exit Property
          End If
  
          If LockWindowUpdate(hwnd) = 0 Then
                  Err.Raise Number:=vbObjectError + ERR_WINDOW_LOCK_FAIL, _
          Description:="Unable to set a  PowerPoint window lock"
          Exit Property
          Else
          LockWindowUpdate (hwnd)
          End If
  
      Else
      'Unlock the Window to refresh
      LockWindowUpdate (0&amp;)
      UpdateWindow (hwnd)
      hwnd = 0
     End If
  End Property
  
  
  Sub TestSub()
  ' Lock screen redraw
   If ScreenUpdatingOff = True Then ScreenUpdating = False
  
   ' --- Loop through charts in Excel and export them to Powerpoint
   ' Redraw screen again
  ScreenUpdating = True
  
  End Sub
  </code></pre>
  
  <p>Many thanks in advance. Very strange that this functionality is not readily available, now I need your help!</p>