PowerPointでオブジェクトを一覧にしてテキストファイルへ出力する。
背景
パワーポイントを使って、画像のフロア図面上に、PC等の機器をオブジェクト(シェイプ)としてプロットし、PC等配置図を作っているのを見かけました。何故器機配置図をパワーポイントで作っているのかは謎ですが。どうやら、フロア図面を作る部署ではCADが使えないとか、諸般の事情があるようです。そして、フロアごとにPC台数やプリンター等を算出しろとか来たみたいで、印刷して手作業で数えているのをみて?と思い、ちゃちゃっと作ってみました。今後も何度も数えそうなので。器機配置図を作るのにパワーポイントが最適ななのか?甚だ疑問ですが、環境には逆らえないという、制約があるそうです。
どんなものを作ってみたのか
あくまでもサンプルです。シェイプ又は画像に機器属性を割り当ててそれをタブ区切りテキストに出力するというものです。
↓
コード
ソース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 & "ID" & vbTab & "シリアル番号" & vbTab & "説明" & vbTab _ & "中分類" & vbTab & "建屋" & vbTab & "座標" & vbTab & "設置場所" & vbTab _ & "契約所管" & vbTab & "開始日" & vbTab & "終了日" & vbTab _ & "再リース開始日" & vbTab & "再リース終了日" & vbTab & "固有属性1" & vbTab & "固有属性2" & vbTab & "固有属性3" For Each sld In ActivePresentation.Slides For Each shp In sld.Shapes If sld.SlideNumber <> 1 Then If shp.Type = msoGroup Then oRow = sld.SlideNumber & vbTab & shp.Name For Each gitem In shp.GroupItems If gitem.HasTextFrame Then oRow = oRow & vbTab & gitem.TextFrame.TextRange.Text End If Next gitem Print #1, oRow Else oRow = sld.SlideNumber & vbTab & shp.Name & vbTab & shp.TextFrame.TextRange.Text Print #1, oRow End If End If Next shp Next sld Close #1 MsgBox "Shapes.txtに書き出しました。" End Sub Sub VisiblePropertyFalse() For Each sld In ActivePresentation.Slides For Each shp In sld.Shapes If sld.SlideNumber <> 1 Then If shp.Type = msoGroup Then For Each gitem In shp.GroupItems If gitem.HasTextFrame Then If gitem.Name <> "ID" Then gitem.Visible = msoFalse End If End If Next gitem End If End If Next shp Next sld MsgBox "IDのみ表示しました。" End Sub Sub VisiblePropertyAllTrue() For Each sld In ActivePresentation.Slides For Each shp In sld.Shapes If sld.SlideNumber <> 1 Then If shp.Type = msoGroup Then For Each gitem In shp.GroupItems If gitem.HasTextFrame Then gitem.Visible = msoTrue End If Next gitem End If End If Next shp Next sld MsgBox "すべて表示しました。" End Sub
使い方
スライドショーにすると最初のスライドにボタンがあります。エクスポートをクリックすると、パワーポイントファイルと同じ場所にShape.txtという名前でタブ区切りテキストが出力されます。
それをEXCELにインポートする感じです。
エクスポート対象のシェイプ
- 1スライド目は無視
- タイトル行用に見出し行を出力
- 2スライド目以降のすべてのシェイプ(画像も含む)が対象
- グループ化されている場合は、グループ単位で1行にされてエクスポート
- グループ化の場合は、シェイプのグループ内順序を統一うることを前提
表示内容の切り替え
機器配置図を考えると、不要な属性が多いので、IDだけ表示、すべての属性を表示の切り替えをできるようにしました。
IDのみを表示
すべての属性を表示
最後に
本来はDBと連携するのが望ましいような気がしますが、そんなもの作っている時間も知識もないので。
コメント
コメントを投稿