酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Excel VBAでオートシェイプに登録したマクロ名を取得する

f:id:ch3cooh393:20130102165622p:plain

オートシェイプに登録されたマクロ名を取得します。

''' <summary>
''' オートシェイプに登録されているマクロ名を取得する
''' </summary>
''' <param name="sheetName">シート名</param>
''' <param name="shapeName">シェイプ名</param>
''' <returns>
'''  オートシェイプに登録されているマクロ名
''' </returns>
Public Function GetShapeActionMacro(sheetName As String, shapeName As String) As String

    ' ワークシートのオブジェクトを取得
    Dim tempSheet As Worksheet
    Set tempSheet = Worksheets(sheetName)

    ' シェイプのオブジェクトを取得
    Dim tempShape As shape
    Set tempShape = tempSheet.Shapes(shapeName)

    ' シェイプに登録されたマクロ名を取得
    Dim retMacroName As String
    retActionMacro = tempShape.OnAction
    GetShapeActionMacro = retActionMacro

End Function

ワークシート"Sheet1"のシェイプ"shikaku"に登録されているマクロ名を取得する場合には、下記の様なコードを書く事が出来ます。

Private Sub Worksheet_Activate()

    Dim sctionMacroName As String
    sctionMacroName = GetShapeActionMacro("Sheet1", "shikaku")

    MsgBox "Sheet1のシェイプshikakuの登録マクロは「" & sctionMacroName & "」です"

End Sub 

シートを開くと、あらかじめ登録していたマクロ「Sheet1.hogeMacro」が取得出来ているのが確認出来ます。

f:id:ch3cooh393:20130102165555p:plain