skip to content »

457040.ru

Screenupdating in powerpoint

We can observe that there is no screen updating till running the macro.

screenupdating in powerpoint-40screenupdating in powerpoint-78

Raise Number:=vb Object Error ERR_VERSION_NOT_SUPPORTED, _ Description:="Supported for Power Point 97/2000/2002/2003 only." Exit Property End Select If hwnd = 0 Then Err.Screen Updating Application Property in VBA is used to turn ON/OFF screen updating.If we set Screen Updating property to TRUE then it turns on the screen updating else turn off the screen updating. In the above syntax Application represents object and Screen Updating is the Property of Application object.Private Declare Function Find Window Lib "user32" Alias "Find Window A" _ (By Val lp Class Name As String, _ By Val lp Window Name As Long) As Long ' Use Lock Window Update to prevent/enable window refresh Private Declare Function Lock Window Update Lib "user32" _ (By Val hwnd Lock As Long) As Long ' Use Update Window to force a refresh of the Power Point window Private Declare Function Update Window Lib "user32" (By Val h Wnd As Long) As Long Property Let Screen Updating(State As Boolean) Static h Wnd As Long Dim Version No As String ' Get Version Number If State = False Then Version No = Left(Application. Version, ".") - 1) 'Get handle to the main application window using Class Name Select Case Version No Case "8" ' For PPT97: h Wnd = Find Window("PP97Frame Class", 0&) Case "9" ' For PPT2K: h Wnd = Find Window("PP9Frame Class", 0&) Case "10" ' For XP: h Wnd = Find Window("PP10Frame Class", 0&) Case "11" ' For 2003: h Wnd = Find Window("PP11Frame Class", 0&) Case "12" ' For 2007: h Wnd = Find Window("PP12Frame Class", 0&) Case "14", "15" ' For 2010: h Wnd = Find Window("PPTFrame Class", 0&) Case Else Err.Raise Number:=vb Object Error ERR_VERSION_NOT_SUPPORTED, _ Description:="Newer version." Exit Property End Select If h Wnd = 0 Then ' window was not found... Raise Number:=vb Object Error ERR_NO_WINDOW_HANDLE, _ Description:="Unable to get the Power Point Window handle" Exit Property End If 'Attempt to lock the window If Lock Window Update(h Wnd) = 0 Then ' attempt failed... Raise Number:=vb Object Error ERR_WINDOW_LOCK_FAIL, _ Description:="Unable to set a Power Point window lock" Exit Property End If Else 'State = True 'Unlock the Window to refresh Lock Window Update (0&) Update Window (h Wnd) h Wnd = 0 End If End Property Thanks, I was actually able to figure out this myself once I saw that the class was named "Class1" by default and not Screen Updating.However, it never seems to actually call this function?

I added the line "Lock Window Update (0&)" after the "If Lock Window Update(hwnd) = 0"-paragraph, but I couldn't really notice a difference.

I suspect a major reason for this is not being able to turn off screenupdating for powerpoint. Below is the code-snippet I have borrowed and an example of how I try to call it: Option Explicit ' User Defined 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 Find Window() & Lock Window Update() ' Use Find Window API to locate the Power Point handle.

Declare Function Find Window Lib "user32" Alias "Find Window A" (By Val lp Class Name As String, By Val lp Window Name As Long) As Long ' Use Lock Window Update to prevent/enable window refresh Declare Function Lock Window Update Lib "user32" (By Val hwnd Lock As Long) As Long ' Use Update Window to force a refresh of the Power Point window Declare Function Update Window Lib "user32" (By Val hwnd As Long) As Long Property Let Screen Updating(State As Boolean) Static hwnd As Long Dim Version No As String ' Get Version Number If State = False Then Version No = Left(Application. Version, ".") - 1) 'Get handle to the main application window using Class Name Select Case Version No Case "8" ' For PPT97: hwnd = Find Window("PP97Frame Class", 0&) Case "9" ' For PPT2K: hwnd = Find Window("PP9Frame Class", 0&) Case "10" ' For XP: hwnd = Find Window("PP10Frame Class", 0&) Case "11" ' For 2003: hwnd = Find Window("PP11Frame Class", 0&) Case "12" ' For 2007: hwnd = Find Window("PP12Frame Class", 0&) Case "14" ' For 2010: hwnd = Find Window("PPTFrame Class", 0&) Case Else Err.

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. 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. Should it be in a class module, should I do anything else or what am I doing wrong?

Raise Number:=vb Object Error ERR_NO_WINDOW_HANDLE, _ Description:="Unable to get the Power Point Window handle" Exit Property End If If Lock Window Update(hwnd) = 0 Then Err.