[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ExcelVBAでPowerPointのコメントを返信も含めてExcelに抽出したい』(かき)
はじめまして。Excel VBAでPowerPointのコメントを指定のExcelシートに抽出するマクロを組んでいるのですが、コメントの返信が上手く抽出できません。
具体的には、コメント内容をExcelのA1に、返信をB1抽出したく、
もし返信が複数ある場合はB1セルに改行してまとめて抽出したいです。
また、Powerpointコメントのスレッドが解決済みであれば、C1に「○」を入れたいと考えています。
PowerPointのコメントの解決済みに該当するExcelVBAのプロパティがあればご教示いただきたいです。
以上、ご存知の方いらっしゃいましたらよろしくお願いいたします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
ExcelではなくてPowerPointのVBAについての質問になってしまってますが 今できているところまで、書いてください。
ちなみにですが 返信は、CommnentオブジェクトのRepliesプロパティです この回答でわかりますかね?
Sub sample() Dim sld As Slide Dim cmnt As Comment, repl As Comment For Each sld In ActivePresentation.Slides For Each cmnt In sld.Comments Debug.Print cmnt.Author; cmnt.Text For Each repl In cmnt.Replies Debug.Print repl.Author; repl.Text; Next Debug.Print Next Next End Sub (´・ω・` ) 2024/05/08(水) 13:10:50
返信はCommentオブジェクトのRepliesプロパティであることは存じ上げておりまして、
返信自体は抽出はされるのですが、なぜかスレッドの1番最後の返信のみ抽出される状態です。
以下のコードでも試してみましたがエラーでした。
For Each ppReply In ppComment.Replies
For i = 1 To ppComment.Replies.Conut destWorksheet.Cells(Rows.Count,3).End(xlUp).offset(1).value = ppReply(i).Text & vbLf Next = i Next ppReply
(かき) 2024/05/08(水) 16:22:55
>スレッドの1番最後の返信のみ抽出 ステップ実行して確認してみるとわかりますが、 セルの値を毎回書き換えてるのでそうなります
追記するにはこんな感じです。(未テストです)
If ppComment.Replies.Conut > 0 Then repText=ppReply(1).Text For i = 2 To ppComment.Replies.Conut repText = repText & vbLf & ppReply(i).Text Next = i destWorksheet.Cells(Rows.Count,3).End(xlUp).offset(1).Value = repText End IF (´・ω・` ) 2024/05/08(水) 16:49:59
Sub sample() Dim pptApp As PowerPoint.Application Dim pptfn As Variant, ppt As PowerPoint.Presentation Dim sld As PowerPoint.Slide, cmnt As PowerPoint.Comment, repl As PowerPoint.Comment
pptfn = Application.GetOpenFilename("PowerPointプレゼンテーション,*.pptx") If TypeName(pptfn) = "Boolean" Then Exit Sub
Set pptApp = CreateObject("PowerPoint.Application") pptApp.Visible = True Set ppt = pptApp.Presentations.Open(pptfn, ReadOnly:=msoTrue)
Dim r As Long r = 2 For Each sld In ppt.Slides For Each cmnt In sld.Comments Cells(r, "A").Value = cmnt.Author & Space(1) & cmnt.Text For Each repl In cmnt.Replies Cells(r, "B").Value = Cells(r, "B").Value & IIf(Cells(r, "B").Value = "", "", vbLf) & repl.Author & Space(1) & repl.Text Next Next r = r + 1 Next
ppt.Close pptApp.Quit
End Sub (´・ω・` ) 2024/05/08(水) 16:54:26
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.