Disable screensavers from Excel

A

Andrew at Fleet

To whom it may concern,

Is there a way to disable the Windows XP screen saver from an Excel macro?
I'm using Excel 2003, and a "National Company" version of Windows XP where
the control of the screensaver has been removed from the users. When I'm
running an Excel macro over a large data file, the screensaver starts to
activate. As the CPU's resources are being used by Excel at the time, the PC
freezes. I'm wondering if there's some code that can be added to the macro
to prevent that.

--
Andrew
Telstra Fleet
Melbourne
Australia

----------------
This post is a suggestion for Microsoft, and Microsoft responds to the
suggestions with the most votes. To vote for this suggestion, click the "I
Agree" button in the message pane. If you do not see the button, follow this
link to open the suggestion in the Microsoft Web-based Newsreader and then
click "I Agree" in the message pane.

http://www.microsoft.com/communitie...943de21&dg=microsoft.public.excel.programming
 
M

Mark Ivey

Give this one a go...

I got this one from
http://groups.google.com/group/micr...f72a9ca25d9/3c5283ecbd9e0c60#3c5283ecbd9e0c60



I still think either a reboot or a logoff/logon may be required for this to
take effect.


Option Explicit

Sub DisableScreenSaver()
Dim WShShell, Value, Saved
Dim Password
'Password=Inputbox ("Enter Password")
'If Password <> "running" then Wscript.quit
Set WShShell = CreateObject("WScript.Shell")
On Error Resume Next
Value = WShShell.RegRead("HKCU\Control Panel\Desktop\ScreenSaveActive")
Saved = WShShell.RegRead("HKCU\Control Panel\Desktop\SaveScreenSaved")
Err.Clear
'MsgBox Value & "-" & Saved
On Error GoTo 0
If Saved <> "1" Then
WShShell.RegWrite "HKCU\Control Panel\Desktop\SaveScreenSave", Value
WShShell.RegWrite "HKCU\Control Panel\Desktop\SaveScreenSaved", "1"
WShShell.RegWrite "HKCU\Control Panel\Desktop\ScreenSaveActive", "0"
End If
End Sub

Sub RestoreScreenSaver()
Dim WShShell, Value, Saved
Set WShShell = CreateObject("WScript.Shell")
On Error Resume Next
Value = WShShell.RegRead("HKCU\Control Panel\Desktop\SaveScreenSave")
Saved = WShShell.RegRead("HKCU\Control Panel\Desktop\SaveScreenSaved")
Err.Clear
'MsgBox Value & "-" & Saved
On Error GoTo 0
If Saved = "1" Then
WShShell.RegWrite "HKCU\Control Panel\Desktop\ScreenSaveActive",
Value
WShShell.RegWrite "HKCU\Control Panel\Desktop\SaveScreenSaved", "0"
End If
'WScript.Quit (0)
End Sub



Mark Ivey
 
A

Andrew at Fleet

Hello Mark,

I think I can use this code. The location of the values with the registry
differs slightly, but I can update that. But, I do believe that I'll have to
reboot the PC to allow the changes to be saved. So, do you know of any code
to ask the user to reboot the PC? I would prefer a YesNo box that would
allow a choice, but I can add that later.

TIA
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top