Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 45 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
45
Dung lượng
8,22 MB
Nội dung
Outlook Procedures Office VBA: Macros You Can Use Today page 301 Out Auto Replying to Selected E-mail Messages With this procedure you can send a predefined message as a reply to selected e- mail messages. Note: This procedure provides code using the Redemption object, which requires installation of the Redemption COM Object. View the Appendix to learn how to store this procedure in a Standard module. Option explicit¶ ' * * * * * Public Sub SendAutoReply()¶ 'Outlook Application Objects declaration¶ Dim objExp As Outlook.Explorer¶ Dim objMail As Outlook.MailItem¶ Dim objItem As Object¶ 'Redemption SafeMail object declaration¶ Dim objSafeMail As Object¶ 'Auto Reply message variable¶ Dim strReplyMessage As String¶ 'Set this variable as desired¶ strReplyMessage = "Thank you! Your order will be " & _¶ "processed immediately!"¶ 'Set active explorer object¶ Set objExp = Application.ActiveExplorer¶ 'Loop in selected items in Active Explorer¶ For Each objItem In objExp.Selection¶ 'If selected item is a mail item then execute¶ 'auto reply function¶ If objItem.Class = olMail Then¶ 'Set mail item object as the selected item¶ Set objMail = objItem¶ 'Create a reply mail object by using selected mail object¶ Set objMail = objMail.Reply¶ 'Redemption Addition starts here¶ 'Create Redemption SafeMail object¶ 'Use this object to send message without¶ 'security warning¶ Set objSafeMail = CreateObject("Redemption.SafeMailItem")¶ Set objSafeMail.Item = objMail¶ 'Redemption Addition stops here¶ 'Add requested auto message to current message as reply¶ With objSafeMail 'Using Redemption Safe Mail Item object¶ .HTMLBody = strReplyMessage & vbCrLf & .HTMLBody¶ 'For Plain Text reply, use the following¶ Outlook Procedures page 302 Office VBA: Macros You Can Use Today Out 'Body property setting instead HTMLBody¶ 'Please comment out the previous code line¶ '.Body = strReplyMessage & vbCrLf & .Body¶ 'Send reply immediately¶ .Send¶ End With¶ End If¶ 'Continue with next selected item in active explorer¶ Next objItem¶ End Sub¶ To send the same reply to specific e-mail messages received, set the strReplyMessage variable that stores the predefined text message in the code. Set the .HTMLbody and .body properties to use either one or the other. Comment out the unwanted property by placing an apostrophe to the left of the property you do not want to run. The macro as written uses the .HTMLbody property. Select the mail items in the active folder then run the macro. Remote Control with Outlook E-mail Message This macro shows how to turn the Outlook Application into a Remote Control tool. CAUTION! Using this code involves some risk. To make this code more secure, use a very specific subject line, and do not share it. Note: This procedure provides code using the Redemption object, which requires installation of the Redemption COM Object. Scenario: Each day, you are required send an e-mail to a particular person. Today you forgot, and now you’re over at a friend’s house. To send this daily e-mail out from a remote location, you only need to send a special e-mail message to yourself. The code tracks the folder events, and when specific criteria are met, it then runs the code and attaches the requested file in the reply to the incoming e-mail message. Outlook Procedures Office VBA: Macros You Can Use Today page 303 Out View the Appendix to learn how to store this procedure in the ThisOutlookSession module. Dim myFolderEventsClass As clsRemoteControl¶ Public Sub Application_Startup()¶ 'Create class object for handling receiving email items¶ Set myFolderEventsClass = New clsRemoteControl¶ End Sub¶ The following code goes in a new class module. In the Properties window, change the name to clssRemoteControl by typing in the box to the right of Name. Copy and paste the following code into the ‘clsRemoteControl’ object class module in Outlook VBA. View the Appendix to learn how to store this procedure in a Class module. Option explicit¶ '* * * * *¶ Public WithEvents myOlItems As Outlook.Items¶ Private Sub Class_Initialize()¶ Set myOlItems = Outlook.Session _¶ .GetDefaultFolder(olFolderInbox).Items¶ End Sub¶ '* * * * *¶ Private Sub myOlItems_ItemAdd(ByVal Item As Object)¶ 'Verify if item is a MailItem¶ If TypeName(Item) = "MailItem" Then¶ 'Run main module to send email¶ Call AutoSendEmail(Item)¶ End If¶ End Sub¶ '* * * * *¶ Private Sub AutoSendEmail(objMail As MailItem)¶ 'Variable declaration¶ Dim strSubject As String¶ Dim strFileName As String¶ Dim strReplyMsg As String¶ Dim fileNameStart As Long¶ Dim fileNameEnd As Long¶ 'Redemption SafeMail object declaration¶ Dim objSafeMail As Object¶ 'Set variables here¶ strSubject = "Send me file."¶ strReplyMsg = "Your file is attached."¶ 'Redemption Additional starts here¶ 'Create Redemption SafeMail object¶ Outlook Procedures page 304 Office VBA: Macros You Can Use Today Out 'Use this object to send message without¶ 'security warning¶ Set objSafeMail = CreateObject("Redemption.SafeMailItem")¶ Set objSafeMail.Item = objMail¶ 'Redemption Additional stops here¶ '1- Verify Subject¶ If objSafeMail.Subject <> strSubject Then Exit Sub¶ '2- Verify if file is existing¶ '' File name is supposed to be send in¶ '' body section of incoming email message¶ strFileName = objSafeMail.Body¶ 'File name must be written in parenthesis¶ 'Parse required file name¶ fileNameStart = InStr(strFileName, "(")¶ fileNameEnd = InStr(strFileName, ")")¶ 'Verify if file name is a valid string¶ If fileNameStart = 0 Or fileNameEnd = 0 Or _¶ fileNameEnd < fileNameStart Then Exit Sub¶ strFileName = Trim(Mid(strFileName, fileNameStart + 1, _¶ fileNameEnd - fileNameStart - 1))¶ 'Verify if file is existing¶ If Dir(strFileName) = "" Then Exit Sub¶ 'Create reply email¶ 'Set same object as the reply that would be send back¶ Set objSafeMail = objMail.Reply¶ With objSafeMail¶ 'Custom reply message¶ .Body = strReplyMsg & vbCrLf & .Body¶ 'Insert Attachment¶ .Attachments.Add strFileName¶ 'Send reply¶ .Send¶ End With¶ End Sub¶ The sender’s name, reply string and the subject line should be set as desired. The macro runs automatically. Quit Outlook and re-launch to activate tracking incoming e-mail messages. Tip: Additional checks can be added to increase security. For every additional check, an additional If-Then statement needs to be added. PowerPoint Procedures Office VBA: Macros You Can Use Today page 305 Pwr PowerPoint Procedures By Bill Dilworth Inserting a Predefined Number of Slides This procedure adds a specified number of slides to the active presentation. Example file: P001.ppt View the Appendix to learn how to store this procedure in a Standard module. Option Explicit¶ ' * * * * *¶ Sub BigInsert()¶ 'Variable declaration¶ Dim intInsertCount As Integer¶ Dim strInsertCount As String¶ Dim i As Integer¶ 'The default number of slides to display¶ strInsertCount = InputBox("How many slides?", _¶ "Bulk Insert Macro", "3")¶ If IsNumeric(strInsertCount) Then¶ intInsertCount = Val(strInsertCount)¶ Else¶ 'If the user removes the 3 or replaces with text¶ 'the macro tells the user there’s a problem¶ MsgBox "Input not understood.", vbOKOnly, "Error"¶ ' and exit the macro¶ Exit Sub¶ End If¶ 'Check to make sure the number is valid¶ If intInsertCount <= 1 Then¶ 'Number is too low¶ MsgBox "Enter a number higher than 1", vbOKOnly, _¶ "Number Too Low Error"¶ Exit Sub¶ End If¶ If intInsertCount > 100 Then¶ Scenario: Adding new slides, all at once, is often necessary when building a presentation. Use this macro to insert many blank slides at once, a procedure that can be done manually—one at a time—by hitting Insert | New Slide. PowerPoint Procedures page 306 Office VBA: Macros You Can Use Today Pwr 'Number is big, better double check¶ If MsgBox("Confirm add " & intInsertCount & _¶ " slides.", vbYesNo, "Confirm large addition") _¶ <> vbYes Then Exit Sub¶ End If¶ 'Add the number of slides by looping¶ For i = 1 To intInsertCount¶ 'Adds a new slide to the end of the presentation (count +1)¶ 'using the normal bulleted text layout¶ ActivePresentation.Slides.Add _¶ ActivePresentation.Slides.Count + 1, _¶ ppLayoutText¶ 'Loop back if there are more to add.¶ Next i¶ End Sub¶ Tip: The ppLayoutText portion of the line can be changed to any of the 29 values in the intellisense list that appears when typing the line. Figure 73 – Intellisense in the VBE Manipulating AutoShapes When building a presentation, it is often necessary to change the color of some of the shapes within a presentation. Because the basic presentation is used for several purposes, it is not desirable to have to redesign the slides each time the colors need to be changed. It is easy to automatically change the shape’s color based on the shape that is selected when a macro is run. PowerPoint Procedures Office VBA: Macros You Can Use Today page 307 Pwr Example file: P002.ppt Figure 74 – Changing the Design of AutoShapes View the Appendix to learn how to store this procedure in a Standard module. Scenario: The goal of this macro is two-fold. First, if a colored rectangle is selected, change all the rest of the rectangle auto-shapes in the presentation to the same color. Second, if the selected object is not a square, then change all of the rectangular auto-shapes to blue. This demonstrates the use of shape selections and how to change a shape’s properties. PowerPoint Procedures page 308 Office VBA: Macros You Can Use Today Pwr Option Explicit¶ ' * * * * *¶ Sub BlueSquares()¶ 'Declare the counter variables used to cycle¶ ' thru the objects and slides¶ Dim varSlideNumber As Integer¶ Dim varShapeNumber As Integer¶ With ActivePresentation¶ For varSlideNumber = 1 To .Slides.Count Step 1¶ With .Slides(varSlideNumber)¶ For varShapeNumber = 1 To .Shapes.Count Step 1¶ With .Shapes(varShapeNumber)¶ Select Case .AutoShapeType¶ Case Is = msoShapeRectangle¶ If ActiveWindow.Selection.ShapeRange(1).AutoShapeType = _¶ msoShapeRectangle Then¶ .Fill.ForeColor.RGB = _¶ ActiveWindow.Selection.ShapeRange(1).Fill.ForeColor.RGB¶ Else¶ .Fill.ForeColor.RGB = RGB(0, 0, 255)¶ End If¶ Case Else¶ 'Insert code for objects other than autoshapes here.¶ 'Close each of the selecting tools, loops and with statements in turn.¶ End Select¶ End With¶ Next varShapeNumber¶ End With¶ Next varSlideNumber¶ End With¶ End Sub¶ Grabbing All Text This procedure exports all the text from every shape or text box in a PowerPoint presentation to a simple text file with the option to label which text came from which slide/shape. Example file: P003.ppt Scenario: The boss loved the presentation on the product and wants to send the wording only over to the Advertising department. The entire text from the presentation needs to be extracted. One way to do this is to cut and paste each text section into a text application from PowerPoint, but this is very slow and tedious. This macro exports all the text from a presentation into a single simple text file that can be imported to any other application. PowerPoint Procedures Office VBA: Macros You Can Use Today page 309 Pwr View the Appendix to learn how to store this procedure in a Standard module. Option Explicit¶ ' * * * * *¶ Sub AllTextOut()¶ 'Variable declaration¶ Dim intSlide As Integer¶ Dim intShape As Integer¶ Dim strFileName As String¶ Dim strDummy As String¶ 'Set the file name that the output text will be sent to.¶ strFileName = "c:\Textout.txt"¶ strDummy = MsgBox("Do you want to include labels?", _¶ vbQuestion + vbYesNoCancel, "Label text")¶ If strDummy = vbCancel Then Exit Sub¶ 'Open the output file specified earlier.¶ 'If file already exists, running again will replace¶ 'old contents with new contents. Use different file¶ 'name to keep old data.¶ Open strFileName For Output As #1¶ With ActivePresentation¶ 'Add filename label if required¶ If strDummy = vbYes Then¶ 'Items printed to #1 are output to the text file¶ Print #1, "strFileName " & .Name¶ Print #1, " "¶ Print #1, ""¶ End If¶ 'Begin a loop to run thrugh each slide in the presentation¶ For intSlide = 1 To .Slides.Count¶ 'Add label if required¶ If strDummy = vbYes Then Print #1, "Slide: " & intSlide¶ 'Add to the assumed prefix¶ With .Slides(intSlide)¶ 'Begin the loop to cycle through each shape on the slide¶ For intShape = 1 To .Shapes.Count¶ 'Add to the assumed prefix¶ With .Shapes(intShape)¶ 'Add label if required¶ If strDummy = vbYes Then Print #1, "Shape: " & _¶ intShape & " " & .Name¶ 'Check if there is a text frame to hold text¶ If .HasTextFrame Then¶ 'If there is, then output that text to the file¶ Print #1, .TextFrame.TextRange.Text¶ End If¶ 'End the shapes assumption on the prefix¶ End With¶ PowerPoint Procedures page 310 Office VBA: Macros You Can Use Today Pwr 'If labeling then a blank line is needed _¶ here in the text file¶ If strDummy = vbYes Then Print #1, ""¶ 'Loop to the next shape or, if done, proceed¶ Next intShape¶ 'End the slide assumption on the prefix¶ End With¶ 'If labeling, a line is needed in the text file here¶ If strDummy = vbYes Then Print #1, "========"¶ 'Loop to the next slide or, if done, proceed¶ Next intSlide¶ 'End the presentation assumed prefix¶ End With¶ 'Close output text file¶ Close #1¶ End Sub¶ The output file is hard-coded into the macro. Note: This is a PowerPoint design mode macro. Change the line strFileName = "c:\Textout.txt" to contain the desired file name. Moving Shapes and Graphics During Presentation This procedure allows the user to move some shapes or pictures around the screen during a presentation by using Action Setting-triggered macros. Example file: P004.ppt View the Appendix to learn how to store this procedure in a Slide module. Option Explicit¶ ' * * * * *¶ 'Variable declaration¶ Scenario: During a presentation, the desire is to select one of several images being displayed and to move each of them individually; for example, to pick who will be on which team in the upcoming softball game. To illustrate this graphically, the desire is to move the picture of each of the players to their team’s side of the slide. [...]... Note: This macro runs automatically This is a PowerPoint presentation-mode macro Presentation-mode macros operate during slide shows; therefore, viewing the show is necessary to use this macro Office VBA: Macros You Can Use Today page 325 Pwr PowerPoint Procedures Pwr page 326 Office VBA: Macros You Can Use Today Access Procedures Access Procedures By Nico Altink Splitting Names This procedure demonstrates... Notes section of the presentation This macro provides for that capability page 316 Example file: P007.ppt and P007.doc Office VBA: Macros You Can Use Today PowerPoint Procedures Figure 75 – Word’s Outline View Pwr Figure 76 –PowerPoint’s Outline View Office VBA: Macros You Can Use Today page 317 PowerPoint Procedures View the Appendix to learn how to store this procedure in a Standard module Pwr Option... page 3 18 Office VBA: Macros You Can Use Today PowerPoint Procedures Note: Placeholders is a special designation given to shapes that are used to preformat a slide to a custom layout There are several types: pictures, clipart, text, and titles They are used to locate the various fields on the master slide It is not possible to add additional placeholders to a layout Additional shapes and text boxes can. .. form, which selects all fields Now drag and drop all the fields to the gray detail area of the form and align them as shown in the sample form in Figure 80 page 3 28 Office VBA: Macros You Can Use Today Access Procedures Figure 80 – Sample Form Layout 4 Now, you need to add the code to make things happen as described on the form Select the FullName field with a single click If the properties window is not... EndRoutine:¶ End With¶ page 320 Office VBA: Macros You Can Use Today PowerPoint Procedures 'Tell the user what was done and how many slides were added¶ MsgBox "Task complete " & SldCnt - OldCnt & _¶ " slides were added.", vbOKOnly, WrapCnt & _¶ " line max macro"¶ End Sub¶ Note: This is a PowerPoint design mode macro That means it runs while you create a presentation and not while you view it Saving the Show... for the next steps to work page 312 Office VBA: Macros You Can Use Today PowerPoint Procedures Assign one of the three pictures the Action Setting of “NameIt” on mouse click 1 To do this, right-click on the picture, then follow this sequence: Action Setting…| Mouse Click | Run Macro | NameIt Add two Autoshapes: 1 Curved Up Arrow Assign action setting “SpinCCW” on mouse click 2 Click OK to get out of... reflect this as well Assign the shapes the Action Setting of one of the two macros: either RandomJumpAny or RandomJumpList Note: This is a PowerPoint presentation mode macro Presentation mode macros operate during slide shows; therefore, viewing the show is necessary to use this macro page 314 Office VBA: Macros You Can Use Today PowerPoint Procedures Random Madness This macro changes the color, shape,... information form to be created when you press the update button on the list of open invoices Example file: A007.mdb with forms frmNameSelect, frmNameUpdate When the Update button is pressed on a form, show the frmNameUpdate for the selected row (here we are selecting row 1) as shown in Figure 83 : page 334 Office VBA: Macros You Can Use Today Access Procedures Figure 83 – Sample Update Form These forms... counter to the current number of slides¶ OldCnt = SldCnt¶ 'Find out from the user how many lines are allowed in the _¶ textbox placeholder¶ WrapCnt = InputBox("'Wrap' text in placeholder " & _¶ "if they exceed how many lines?", "Wrap after" & _¶ "input", "6") 'Default to 6 if user does not enter a number¶ Office VBA: Macros You Can Use Today page 319 PowerPoint Procedures Pwr 'Keep it reasonable, between... ActivePresentation.SlideShowWindow.View.GotoSlide Val(GetSetting("PowerPointMacros", "SlideSavePoint", ActivePresentation.Name, "1")), msoTrue¶ End Sub¶ Office VBA: Macros You Can Use Today page 321 PowerPoint Procedures This macro is event driven Clicking a shape fires the macro This is achieved by setting the action setting of ‘On mouse click’ to ‘Run Macro’ The macro to run depends on what the shape should . Procedures Office VBA: Macros You Can Use Today page 317 Pwr Figure 75 – Word’s Outline View Figure 76 –PowerPoint’s Outline View PowerPoint Procedures page 3 18 Office VBA: Macros You Can Use. to blue. This demonstrates the use of shape selections and how to change a shape’s properties. PowerPoint Procedures page 3 08 Office VBA: Macros You Can Use Today Pwr Option Explicit¶ '. macro. Presentation mode macros operate during slide shows; therefore, viewing the show is necessary to use this macro. PowerPoint Procedures Office VBA: Macros You Can Use Today page 315 Pwr