The code below is to recursively refresh linked Excel objects in Microsoft PowerPoint. Option Explicit Sub Update_Excel_Links() ' this provides a password to only allow those that should be refreshing data to do so Dim PwdHold As String On Error Resume Next PwdHold = InputBox("Please enter Password to update links:", "PASSWORD", "") If PwdHold = "cable" Then Call RunSave End Sub Sub RunSave() Call UpdateMode Call SaveAsSub End Sub Sub UpdateMode() Dim lCtrA As Integer Dim oPres As Object 'Presentation Dim oSld As Slide Dim strDay As String Set oPres = ActivePresentation With oPres ' update each slide ' this sets links to automatic For Each oSld In .Slides Call SetLinksToAutomatic(oSld) Next ' this sets links to manual; this will prevent updates upon opening For Each oSld In .Slides Call SetLinksToManual(oSld) Next End With End Sub Sub SetLinksToAutomatic(oSlideOrMaster As Object) Dim oShp As PowerPoint.Shape For Each oShp In oSlideOrMaster.Shapes If oShp.Type = msoLinkedOLEObject Then 'Set the link to automatic update mode oShp.LinkFormat.AutoUpdate = ppUpdateOptionAutomatic oShp.LinkFormat.Update End If Next oShp End Sub Sub SetLinksToManual(oSlideOrMaster As Object) Dim oShp As PowerPoint.Shape For Each oShp In oSlideOrMaster.Shapes If oShp.Type = msoLinkedOLEObject Then 'Set the link to manual update mode oShp.LinkFormat.AutoUpdate = ppUpdateOptionManual End If Next oShp End Sub Sub SaveAsSub() ' this code automatically saves dated file to web server; always uses last Friday's date no matter ' what day of week it is run Dim pptPres As Presentation Dim msdate As String Dim x As String msdate = Format(Date, "yyyy-mm-dd") Dim DayAdj As Integer DayAdj = Weekday(msdate, vbSunday) Select Case DayAdj Case 1 'Sunday DayAdj = 2 Case 2 'Monday DayAdj = 3 Case 3 'Tuesday DayAdj = 4 Case 4 'Wednesday DayAdj = 5 Case 5 'Thursday DayAdj = 6 Case 6 'Friday DayAdj = 7 Case 7 'Saturday DayAdj = 1 End Select ActivePresentation.Slides(1).Select ActiveWindow.SmallScroll Down:=-11 ActivePresentation.Save x = ActivePresentation.Path & "\Cable_" & Format(DateValue(msdate) - DayAdj, "mm_dd_yy") & ".ppt" Application.DisplayAlerts = False ActivePresentation.SaveAs (x) ' This will run the BreakLinks subroutine once for each slide found; ' don't know why but that was the only way it would work For Each oSld In ActivePresentation.Slides For Each oShp In oSld.Shapes Call BreakLinks Next oShp Next oSld ActivePresentation.Slides(1).Select ActiveWindow.SmallScroll Down:=-11 ActivePresentation.Save x = "\\server\file share\" & "Cable_" & Format(DateValue(msdate) - DayAdj, "mm_dd_yy") & ".ppt" Application.DisplayAlerts = False ActivePresentation.SaveAs (x) ActivePresentation.Close End Sub Sub BreakLinks() ' Thus code is used with permission from Copyright holder Shyam Pillai ' The code below is found at..... ' http://skp.mvps.org/ppt00047.htm Dim oSld As Slide Dim oShp As Shape Dim oCmdButton As CommandBarButton Set oCmdButton = CommandBars("Standard").Controls.Add(Id:=2956) ActiveWindow.ViewType = ppViewSlide For Each oSld In ActivePresentation.Slides For Each oShp In oSld.Shapes If oShp.Type = msoLinkedOLEObject Then ActiveWindow.View.GotoSlide oSld.SlideIndex oShp.Select Application.CommandBars.FindControl(Id:=2956).Execute ' Do not forget to add this line else you will get erratic ' results since the code execution does not halt while menu ' command is executed hence we have to let the execution ' complete before proceeding. DoEvents End If Next oShp Next oSld oCmdButton.Delete End Sub