Article ID: 166100
Article Last Modified on 10/11/2006
163694 PPT: Sample Code to Apply Small Caps Formatting to Selection
hwnd = FindWindow("PP97FrameClass", 0&)
If FindWindow() is successful, the variable hwnd (a long) holds a handle
to the main application window. Now that you have a handle you can use
the LockWindowUpdate() function to prevent that window from redrawing:
LockWindowUpdate (hwnd)To unlock the window you must call LockWindowUpdate() with NULL (0&) as the parameter.
LockWindowUpdate (0&)It is very important to add this statement. If your code locks a window and then fails to unlock it, the window stays locked even after your macro ends.
' API declarations for LockWindowUpdate() and FindWindow().
Declare Function LockWindowUpdate Lib "user32" _
(ByVal hwndLock As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As Long) As Long
Sub SetSmallCaps()
' Used to trap errors.
On Error Resume Next
Err.Clear
' Dimension variables.
Dim oTextRange As TextRange
Dim oWordRange As TextRange
Dim lNewFontSize As Long
Dim i As Long
Dim hwnd As Long
' Get a handle to the main application window.
hwnd = FindWindow("PP97FrameClass", 0&)
' Lock the main applicationwindow.
' Prevents PowerPoint from redrawing the main window.
LockWindowUpdate (hwnd)
' Get reference to the selected text.
Set oTextRange = ActiveWindow.Selection.TextRange
' Check if error occurred getting text selection.
If Err.Number <> 0 Then
MsgBox "Cannot apply Small Caps to selection. Please select " _
& "some text and run the macro again.", vbExclamation, _
"Invalid Selection"
' Stop the macro.
End
End If
' Loop through the words in the selection.
For i = 1 To oTextRange.Paragraphs.Words.Count
' Get a reference to the first word in the selection.
Set oWordRange = oTextRange.Paragraphs.Words(i, 1)
'With oWordRange.Paragraphs.Characters(1, 1)
With oWordRange.Characters(1, 1)
' Set the first letter to be upper case.
.ChangeCase ppCaseUpper
' Calculate the new font size.
lNewFontSize = ((.Font.Size) / 1.3)
End With
' Change the remaining characters to the new font size.
With oWordRange
.Characters(2, (oWordRange.Length)).Font.Size = lNewFontSize
.Characters(2, (oWordRange.Length)).ChangeCase ppCaseUpper
End With
Next i
' Unlocks the main application window. Whenever you use the
' LockWindowUpdate API to lock a window, you must call
' LockWindowUpdate again (with a Null parameter 0&) to allow the
' window to redraw.
LockWindowUpdate (0&)
End Sub
164735 PPT97: Sample VB Code to Obtain Window Handle
163435 VBA: Programming Resources for Visual Basic for Applications
Additional query words: 97 8.00 kbmacro ppt8 vba vbe
Keywords: kbcode kbdtacode kbhowto kbmacro kbprogramming KB166100