none
Visioのマクロについて教えてください RRS feed

  • 質問

  • こんにちは

    Visioのマクロを使って図面上のテキストボックスの枠線を消すためのマクロを作りたいのですが,まったく動きません。

    当方VBA初心者で,いろいろサイトを探して書いてみたのですが,プロパティ(?)使い方がおかしいのか実行しても反応がありません。

    以下が書いてみたマクロになります。

    ------------------------------------------------------------------------

    Sub u()

        Dim visioShp As Visio.Shape
       
       
            For Each visioShp In Application.ActiveWindow.Page.Shapes
       
                If visioShp.Type = msoTextBox Then
                     visioShp.Line.ForeColor.RGB = RGB(0, 0, 0)
                End If
               
            Next visioShp

    End Sub

    ------------------------------------------------------------------------

    よろしくお願いします。


    • 編集済み CKVVV 2019年8月21日 0:03
    2019年8月20日 23:42

すべての返信

  • 実行環境における Visio のバージョンはどれなのでしょうか。
    2019年8月23日 4:20
  • visioに関してはまったく知識はありませんが、コードを見る限り、線を黒色(=RGB0,0,0)にしているだけのような・・・

    visioShp.Line.ForeColor.RGB = RGB(0, 0, 0)

    の部分を、

    visioShp.Line.Visible = False

    としたらどうですか?

    2019年8月24日 17:04
  • Visio.Shape オブジェクトは Excel や Word などの Shape オブジェクトとは
    構造が異なります。

    ・Visio.Shape オブジェクトには Line というメンバーが存在しない。

    ・Visio.Shape オブジェクトの Type プロパティが返すのは、
     VisShapeTypes クラスで定義されたいずれかの定数と同じ値である。

    Shape オブジェクト (Visio)

    VisShapeTypes 列挙体 (Visio)

    とりあえず、下記のコードであれば Visio 2010 環境で動作することは
    確認済みです。

    Sub Macro1()
    
        Dim vsoShape As Visio.Shape
        
        For Each vsoShape In Application.ActiveWindow.Page.Shapes
            With vsoShape
                If .CharCount > 0 Then
                    .CellsSRC(visSectionObject, visRowLine, visLinePattern).FormulaU = "0"
                    '線のスタイルを指定する場合は以下のコードで
                    '.LineStyle = "Text Only"
                End If
            End With
        Next
    
    End Sub

    あと、Visio にもマクロの記録機能がありますので、
    オンラインヘルプと合わせて活用されることをお奨めします。
    2019年8月27日 0:38