とりあえずフローチャートの箱を作る

職場で、Excel に関するこんな相談を受けました。
フローチャートを作成する際、箱を配置して処理を書き込む手間を省きたい。
よくよく聞いてみると、別の場所(電気回路図の一部)には既に処理の流れを記載したものがあって、それをフローチャート化したいとのこと。一括でコピー&ペーストできるとのことで、確かに箱の一つずつに転記するのは面倒です。

そこで一つのセルを一つの箱(「処理」)に見立て、とにかくセルの並び順に箱を並べ、まずセルの記載内容を箱に転記することにしました。

[標準モジュール]

Public SFC() As ShapeFormatClass

Public Sub MakeBlock()
        
    Dim seq As Variant
        seq = Selection
        
    ReDim SFC(1 To UBound(seq, 1), 1 To UBound(seq, 2))
    Dim i As Long, j As Long
        For j = 1 To UBound(seq, 2)
            For i = 1 To UBound(seq, 1)
                If seq(i, j) <> "" Then
                    Set SFC(i, j) = New ShapeFormatClass
                    Set SFC(i, j).myShape = ActiveSheet.Shapes.AddShape(msoShapeFlowchartProcess, 50 + j * 200, 50 + i * 100, 100, 50)
                        SFC(i, j).myShape.TextFrame2.TextRange.Characters.Text = seq(i, j)
                        SFC(i, j).myShape.Name = SFC(i, j).myShape.Name & "_" & i & "_" & j
                        SFC(i, j).SetFormat
                End If
            Next
        Next
        
End Sub

使うかどうか分かりませんが、各箱の名前にセルの配置順も含めてみました。

↓ こちらでは、箱の色や文字の配置を調整しています。
[クラスモジュール]名前:ShapeFormatClass

Public myShape As Shape

Public Sub SetFormat()

    myShape.Select
    With Selection.ShapeRange
        .Fill.Visible = msoFalse
        With .Line
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorText1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
            .Transparency = 0
            .Weight = 1
        End With
        .TextFrame2.VerticalAnchor = msoAnchorMiddle
        .TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter
        .TextFrame2.TextRange.Font.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
    End With

End Sub

結果は、こんな感じです。
f:id:Infoment:20180911224953p:plain
f:id:Infoment:20180911225018p:plain

さてここから更に、以下に挑戦する予定です。

  • 指定した「処理」を「分岐」(※ひし形)などに変更
  • 指定した「処理」同士をコネクタで接続
  • 指定したコネクタの中間に、処理を挿入
  • などなど

上手くいったら、後日こちらで紹介することにします。

ちなみに、thomさんがブログで、フローチャート作成ツールを公開されています。上記挑戦の際は、恐らくこちらの記載内容にも大いにお世話になると思います。
thom.hateblo.jp

参考まで。