OfficeTips Home || VBA Section || General Section || Download Section || Privacy Policy Bookmark and Share

Updated Comments object in PowerPoint 2013

2013 updates the Comments object to offer more extensions. It has the new Add2, Replies and many other new properties. Add2 method allows you to programmatically add comments from other providers. You can flag the id for your live outlook or sharepoint account by specifying the correct information.

We will look at the example below which also makes use of a Windows Live user to assign the comment attributed to that user. Also, note that the replies are always at one level. So the top comment gets all the replies to it. If you specify the provider id and user id then it takes precendence over the Author information.

Also, if provider id and user id are not specified then those properties fail so make sure you have error handling while enumerating comments.

Supported versions: PowerPoint 2013

Sub CommentsAddAndEnumerate()
With ActivePresentation.Slides(1)
    With .Comments.Add2(0, 0, "User", "SKP", "This is example sucks", "None", "Shyam")

       'Assign comment without credentials
        With .Replies.Add(100, 100, "Some user", "UB", "I agree")
            Call .Replies.Add2(100, 100, "", "UA", "I'll try to improve it", "None", "Shyam Pillai")
        End With
       'Use a Windows Live as provider, use a valid user Id. This is just for representation.	 
        Call .Replies.Add2(100, 100, "", "", "It's alright.", "Windows Live", "02354654b39253ea0")
    End With
    Dim I As Long
    For I = 1 To .Comments.Count
        Call ListCommentInformation(.Comments(I))
End With
End Sub
Sub ListCommentInformation(comment As Comment)
Dim I As Long
On Error Resume Next
With comment
    Debug.Print "Author: " & .Author
    Debug.Print "Author Index: " & .AuthorIndex
    Debug.Print "Author Initials: " & .AuthorInitials,
    Debug.Print "Date & Time: " & .DateTime
    Debug.Print "Is collapsed: " & .Collapsed
    Debug.Print "Text:" & .Text
    Debug.Print "Number of Replies:" & .Replies.Count
    Debug.Print "Provider Id:" & .ProviderID
    Debug.Print "User Id:" & .UserID
    If .Replies.Count > 0 Then
        For I = 1 To .Replies.Count
            Debug.Print "Reply no.: " & I
            Call ListCommentInformation(.Replies(I))
    End If
End With
End Sub



Copyright 1999-2018 (c) Shyam Pillai. All rights reserved.