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と連携するのが望ましいような気がしますが、そんなもの作っている時間も知識もないので。
コメント
コメントを投稿