| 
    
     |  | オートシェイプで作成したフローから文字列を取り出したいです。 ただし、文字列が含まれるものや含まれないものが混在する状態です。
 
 以下のようなVBAコードを作成しましたが、テキストが入力されてない
 オートシェイプで「型が一致しません」エラーが発生します。
 ローカルウィンドウで変数を参照すると「: Text : <アプリケーション定義またはオブジェクト定義のエラーです。> : String」
 という表示になっています。
 
 元々はフローにて使用するオートシェイプは決まっているので、
 AutoShapeTypeで関係ないものや、明らかにテキストが存在しないものは
 省いているのですが、資料の見易さのために配置されたオートシェイプが存在し、テキストが入力されてないところで実行時エラーとなります。
 On Error Resume Nextで検知できるかとも思ったのですが、機能していません。
 事前にテキストの有無を検知できればエラーを回避できるかと色々
 試してみましたが、これ以上の策が思いつきません。
 
 アドバイスあればご教授願いたく。
 
 ※インプットファイルは業務フローです。
 Excelで書くな、というのももっともな意見ですが……
 
 
 【作成ソース】
 
 Private Sub ReadProcessFlowSheet(objSheetIN As Excel.Worksheet, objSheetOUT As Excel.Worksheet, sFile As String, lRow As Long)
 
 On Error Resume Next
 
 Dim sType As String
 Dim sText As String
 Dim objChar As Excel.Characters
 Dim objShape As Excel.Shape
 
 For Each objShape In objSheetIN.Shapes
 With objShape
 sText = ""
 sType = ""
 
 Select Case .AutoShapeType
 Case msoShapeDiamond
 sType = "フロー内接続端子(情報)"
 Case msoShapeOval
 sType = "フロー内接続端子(プロセス)"
 Case msoShapeHexagon
 sType = "画面"
 Case msoShapeCan
 sType = "データベース"
 Case msoShapePlaque
 sType = "リアルバッチ"
 Case msoShapeUTurnArrow
 sType = "問題存在箇所に戻る"
 Case msoShapePentagon
 sType = "前工程(後工程)フローからのつなぎ"
 Case msoShapeFlowchartProcess
 If .ShapeRange.Line.Style = msoLineThinThin Then
 sType = "別フロー"
 Else
 sType = "バッチ"
 End If
 Case msoShapeFlowchartPredefinedProcess
 sType = "人の作業"
 Case msoShapeFlowchartDocument
 sType = "リスト・帳票"
 Case msoShapeFlowchartStoredData
 sType = "インターフェースファイル"
 Case msoShapeRectangularCallout
 sType = "補足説明1"
 Case msoShapeCloudCallout
 sType = "補足説明2"
 Case Else
 '***対象外のオブジェクト
 sType = ""
 End Select
 
 '***対象オブジェクトの場合のみテキストの取得を実施
 If sType <> "" Then
 '***テキストが取得できる場合のみ
 Set objChar = .TextFrame.Characters
 If Err Then
 sText = "テキストなし"
 Err.Clear
 Else
 sText = CStr(objChar.Text)                '***←ここで「型が一致しません。」エラーが発生
 End If
 
 Call WriteShapeInfo(objSheetIN, objSheetOUT, objShape, sType, sText, sFile, lRow)    '***これが本命の処理だが、そこまでたどり着かない
 lRow = lRow + 1
 End If
 
 End With
 Next objShape
 
 End Sub
 
 
 |  |