Powerpointのシェイプ属性を再帰的にテキストファイルへ書き出す

単なるメモです。

Powerpointのシェイプ属性をテキストファイルへ書き出すVBAを修正し、いつもどこに置いたのかわからなくなるので、メモします。

PowerPointでオブジェクトを一覧にしてテキストファイルへ出力するで書いたシェイプ属性をテキストファイルとして書き出すソースが汎用性ないので再作成。シェイプをグループ化しても再帰的にグループ内シェイプを書き出すように修正。



Sub ExportShapes()

    Dim sld As Slide
    Dim shp As Shape
    Dim oTextFile As String
    Dim oRow As String
    oTextFile = ActivePresentation.Path & "\Shapes.txt"
    Open oTextFile For Output As #1

    Print #1, "スライド番号(階数)" & vbTab; "オブジェクト名" & vbTab & "属性"
    For Each sld In ActivePresentation.Slides
        If sld.SlideNumber <> 20 Then
            Call MainProc(sld, sld.SlideNumber)
        End If
    Next sld
    
    Close #1
    MsgBox "Shapes.txtに書き出しました。"
    
End Sub

Sub MainProc(ByVal sld As Slide, SlideNumber As Integer)

    For Each shp In sld.Shapes
        Call SubMainProc(shp, SlideNumber)
    Next shp

End Sub

Sub SubMainProc(ByVal shp As Shape, SlideNumber As Integer)
    
    'オートシェイプ
    If shp.Type = msoAutoShape Then
        oRow = SlideNumber & vbTab & shp.Name & vbTab & shp.TextFrame.TextRange.Text
        Print #1, oRow
    End If
    '線と画像
    If shp.Type <> msoGroup And shp.Type = msoLine Or shp.Type = msoPicture Then
        oRow = SlideNumber & vbTab & shp.Name & vbTab & ""
        Print #1, oRow
    End If

    If shp.Type = msoGroup Then
        oRow = SlideNumber & vbTab & shp.Name
        For Each gitem In shp.GroupItems
            Call SubMainProc(gitem, SlideNumber)
        Next gitem
    End If

End Sub

コメント

このブログの人気の投稿

ダブルクォーテーションで括られたCSVカ​ンマ区切りテキストファイルを SQL Server で Bulk Insert する方法

PowerShellでTSV/CSVの列を絞り込んで抽出し、(先頭/行末)からN行出力する

IKEAの鏡を壁に取り付ける