酢ろぐ!

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

Excel2003のExcel VBAでオートシェイプ内にて表示されている文字列を取得する

オートシェイプ内に表示されている文字列(テキスト)を取得します。

''' <summary>
''' オートシェイプに表示されている文字列を取得する
''' </summary>
''' <param name="sheetName">シート名</param>
''' <param name="shapeName">シェイプ名</param>
''' <returns>
'''  表示されている文字列
''' </returns>
Public Function GetShapeText(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 retShapeText As String
    retShapeText = tempShape.TextFrame.Characters.text
    
    GetShapeText = retShapeText
End Function

あらかじめワークシート"Sheet1"に、シェイプ"shikaku"を作成しておきます。

特定のシートが表示された時に、ワークシート"Sheet1"のシェイプ"shikaku"に表示されている文字列を取得する場合、下記の様なコードを書く事が出来ます。

Private Sub Worksheet_Activate()

    Dim shapeText As String
    shapeText = GetShapeText("Sheet1", "shikaku")

    MsgBox "Sheet1のシェイプshikakuの文字列は「" & shapeText & "」です"

End Sub 

サンプルコードを実行した結果を以下に示します。

シートを開くと、シェイプ"shikaku"で表示されていた文字列が取得出来ているのが確認出来ます。