VBAでオートシェイプ文字列の下線色取得方法とは?

このQ&Aのポイント
  • Excelの図形内のテキストの編集で、マウスをドラッグしてテキストの領域を選択後、コンテキストメニューからフォント設定ダイアログ画面に移行し、[フォント]タブ上には下線の色があります。VBA上から下線の色を取得する方法を教えてください。
  • 現在分かっている下線の色を取得するためのVBAプログラムを試してみましたが、全てエラーとなります。どなたか、ご教授願います。
  • 現在、ExcelのVBAでオートシェイプ文字列の下線色を取得する方法を模索していますが、うまくいっていません。お手数ですが、ご指導いただけますと幸いです。
回答を見る
  • ベストアンサー

vbaで、オートシェイプ文字列、下線色取得について

動作環境 OS:Windows7(64Bit) Home Premium SP1 MS:Office Version2007 SP3 Excel図形内のテキストの編集で、マウスをドラッグしてテキストの領域を選択後、コンテキスト メニューから、フォント(F)-フォント(設定ダイアログ)画面-[フォント]タブ上に、下線の色が、 あります。 テキスト設定した場合、vba上から下線の色を取得する方法が、知りたいです。 大体、目途は、付いています。 どなたか、ご指導願います。 ■現在、自分が、分かっている下線の色を取得するPG 下記の方法ですと、全てエラーです。 For Each wkbWorksheets In ActiveWorkbook.Worksheets For Each wksShapes In wkbWorksheets.Shapes With wksShapes.TextFrame2.TextRange.Characters MsgBox .Font.UnderlineStyle.ColorIndex MsgBox .Font.UnderlineStyleColorIndex MsgBox .Font.Underline.ColorIndex MsgBox .Font.UnderlineColorIndex End With Next wksShapes Next wkbWorksheets

質問者が選んだベストアンサー

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.2

1番目の文字列を含めて色付きアンダーラインを設定してから実行すれば 1文字目のものについて取得できます。 コードを書くときは適当に書いてもだめですから、 ピリオド(.)を打ってそのなかから適切なものを選択すれば下記のようにいくつかのことがわかります。 MsgBox .Font.UnderlineColor.SchemeColor MsgBox .Font.UnderlineColor.RGB MsgBox .Font.UnderlineStyle 前回のレスの通り、すべての文字について調べないといけないので面倒です。 当方はやる気がしないのでご自分で、さらにfor each を使って面倒な判定を設定して取得してください。

その他の回答 (1)

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

.Font.Underline.ColorIndexというプロパティは無いようですが そのままだとエラーになりませんか。 そのままでは目的のものを取得できません。 何も取得しないか最初の1文字のぶんだけ取得できるかでしょう。 .Charactersの中もすべての文字について調べる必要があります。  Wordの場合だと書式を指定してアンダーラインの部分1か所ずつの単位で検索されるので簡単なコードで済みますが、エクセルでは1文字ずつでしか取得できません。

6ass3eu6
質問者

補足

はい、エラーになります。 ですので、エラーになる部分をエラーにならないように正しい取得が、 出来るvba(PG)が、知りたいのです。 エラーになる部分は、例として、想定したvba(PG)です。 ご指導の程、よろしくお願いします(__)。

関連するQ&A

  • vbaで、オートシェイプ文字列、各下線取得について

    動作環境 OS:Windows7(64Bit) Home Premium SP1 MS:Office Version2007 SP3 Excel図形内のテキストの編集で、マウスをドラッグしてテキストの領域を選択後、コンテキスト メニューから、フォント(F)-フォント(設定ダイアログ)画面-[フォント]タブ上に、下線のスタイルが、 複数あります。 テキスト設定した場合、vba上から下線のスタイルを取得する方法が、知りたいです。 大体、目途は、付いています。 どなたか、ご指導願います。 ■現在、自分が、分かっている下線のスタイルを取得するPG 下記の方法ですと、MsgBoxで、.Font.Underline=2が取得されます。 For Each wkbWorksheets In ActiveWorkbook.Worksheets For Each wksShapes In wkbWorksheets.Shapes With wksShapes.TextFrame.Characters MsgBox .Font.Underline End With Next wksShapes Next wkbWorksheets ※「1.」~「16.」で、下線のスタイルをvbaから取得するには? 1.一重線 2.二重線 3.太線 4.点線 5.太点線 6.破線 7.太破線 8.長破線 9.長太破線 10.一点破線 11.太一点破線 12.二点破線 13.太二点破線 14.波線 15.太波線 16.二重波線

  • vbaで、オートシェイプ文字幅と間隔について

    動作環境 OS:Windows7(64Bit) Home Premium SP1 MS:Office Version2007 SP3 Excel図形内のテキスト編集で、マウスをドラッグしてテキストの領域を選択後、コンテキスト メニューから、フォント(F)-フォント(設定ダイアログ)画面-[文字幅と間隔]タブ上に、間隔と幅が、 あります(画像参照)。 テキスト設定した場合、vba上から文字間隔と幅を取得する方法が、知りたいです。 それと、カーニングもついでに、取得する方法が、知りたいです。 大体、目途は、付いています。 どなたか、ご指導願います。 ■現在、自分が、分かっている文字間隔と幅を取得するPG(URL参照) http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1188387871 下記の方法ですと、MsgBoxで、[文字間隔を広げる]設定値が取得されます。 For Each wkbWorksheets In ActiveWorkbook.Worksheets For Each wksShapes In wkbWorksheets.Shapes With wksShapes.TextFrame2.TextRange.Characters MsgBox .Font.Spacing End With Next wksShapes Next wkbWorksheets ※[標準]、[文字間隔をつめる]、[カーニング]で、vbaから設定値を取得するには?

  • エクセルVBA/シェープの文字列を取得

    エクセル2010です。 BOOK内の各シートにボタンやチェックボックス、ラベルやテキストボックスなどが配置されています。 これらの貼り付けられたものの一覧を作りたいのです。 Sub obj_Check() Dim st Dim sp Dim i As Long For Each st In Sheets For Each sp In st.Shapes i = i + 1 With Sheets("Sheet3") .Cells(i, "A").Value = sp.Name ' .Cells(i, "B").Value = sp.Caption ’これがエラー .Cells(i, "C").Value = st.Name End With Next sp Next st End Sub とやってみましたがsp.Captionがエラーになります。 .Cells(i, "B").Value = sp.Shapes.Range.Character.Text としても同じです。 どうやったら、シェープに書かれた文字列が取得できるのでしょうか?

  • VBA超初心者です。

    プログラミング超初心者です。 下のは、pptxのスライド1枚目に表示されているすべての文字・色・大きさを1文字ずつ取ってくるマクロです。 これを改造して、 (1)pptxファイル内のすべてのスライドに対して (2)"文字 色 大きさ"の形式で (3)結果をテキストファイルに書き出す(スライド1枚につきテキストファイル1つでも、全部まとめてテキストファイル1に書き出すでもOK)(さらにシェイプ毎に分かれてくれたら尚嬉しい) にはどうすればいいのでしょうか? 改造後のソースを書いてくれると助かります。注文の多い我儘な質問ではありますが、よろしくお願いします。 ------------------------------------------------------------ Sub Sample1() '1文字ずつ文字情報取得 Dim myShape As Shape Dim myCharacter As Object 'スライド1のシェイプを処理 For Each myShape In ActivePresentation.Slides(1).Shapes With myShape 'テキストがあるシェイプを処理 If .TextFrame.HasText Then For Each myCharacter In .TextFrame.TextRange.Characters MsgBox "テキスト:" & myCharacter.Text & vbCrLf & _ "フォントカラー:" & myCharacter.Font.Color & vbCrLf & _ "フォントサイズ:" & myCharacter.Font.Size Next End If End With Next End Sub --------------------------------------------------------------

  • エクセルVBAでテキストボックスに文字

    Excel2016です。 ワークシート上に配置した、図形の「テキストボックス」に文字を入れるVBAについての質問です。 下記のTEST01では期待通り文字が入りますが、これはテキストボックスをSelectしなければなりません。 TEST02ならSelectせずにOKかと思ったら実行時エラーとなりました。 どのように修正したらよろしいのでしょうか? Sub TEST01()   Sheets(“Sheet1”).Shapes.Range(Array("TextBox 3")).Select   Selection.ShapeRange.TextFrame2.TextRange.Characters.Text = "TEST/TEST/2020"   Selection.ShapeRange.TextFrame2.TextRange.Font.Name = "Meiryo UI"   Selection.ShapeRange.TextFrame2.TextRange.Font.Bold = msoTrue End Sub Sub TEST02()   With Sheets(“Sheet1”).Shapes.Range(Array("TextBox 3"))     .ShapeRange.TextFrame2.TextRange.Characters.Text = "TEST/TEST/2020"     .ShapeRange.TextFrame2.TextRange.Font.Name = "Meiryo UI"     .ShapeRange.TextFrame2.TextRange.Font.Bold = msoTrue   End With End Sub

  • vbaマクロ、オートシェイプの文字列各下線について

    動作環境 OS:Windows7(64Bit) Home Premium SP1 MS:Office Version2007 SP3 Excel図形内のテキストの編集で、マウスをドラッグしてテキストの領域を選択後、コンテキスト メニューから、フォント(F)-フォント(設定ダイアログ)画面-[フォント]タブ上に、下線のスタイルが、 複数あります。 訳が合って、この各下線の表意定数を、知りたいのです。 大体、目途は、付いています。 どなたか、ご指導願います。 ■各下線の表意定数 括弧内の?を、xl~のように知りたいです。 後、クエスチョン以外も、間違っている場合、教えて下さい。 1.一重線(xlSingle) 2.二重線(xlDouble) 3.太線(xlMedium) 4.点線(xlDot) 5.太点線(?) 6.破線(xlDash) 7.太破線(?) 8.長破線(?) 9.長太破線(?) 10.一点破線(xlDashDot) 11.太一点破線(?) 12.二点破線(xlDashDotDot) 13.太二点破線(?) 14.波線(?) 15.太波線(?) 16.二重波線(?)

  • Excel VBA テキストボックスの値の取得

    テキストボックスの値が必要となり参照しようと思い、検索したところdebug.printにある3つの方法がヒットし、試して見ましたが、エラーになります。 テキストボックスの名前にはどれもtxtの文字を含んでいます。 Sub ShapeValue() Dim Shp As Shape For Each Shp In ActiveSheet.Shapes If InStr(Shp.Name, "txt") <> 0 Then Debug.Print Shp.TextFrame.Characters.Text 'オブジェクトは、このプロパティまたはメソッドをサポートしていません。 Debug.Print Shp.TextFrame2.TextRange.Text '指定された値は境界を超えています。 Debug.Print Shp.ShapeRange.TextFrame.Characters.Text 'オブジェクトは、このプロパティまたはメソッドをサポートしていません End If Next Shp End Sub どうすれば取得できるでしょうか?

  • パワーポイントVBAで

    http://q.hatena.ne.jp/1144314367 これと同じような事をしたくて、 Sub TextBoxToDebugPrint() Dim slide For Each slide In ActiveWindow.Parent.Slides Dim shape For Each shape In slide.Shapes Debug.Print shape.TextFrame.TextRange.Text Next Next End Sub を張り付けたのですが、一部の文字は取得できますが、 実行時エラー -2147024809 指定された値は境界を超えています。 と言うエラーが発生し、止まってしまいます。 どもオブジェクトがどういう意味のエラーを出してるのかわからないのですが どういう意味でしょうか?

  • 【Word2007】Shapeの中のInlineShapeの情報を取得したい

    いつもお世話になっております。 (図がなくて説明が悪かったと思いますので、訂正しました。) Word2007を使用しています。 [挿入]⇒[図形]から「テキストボックス」を入力できると思います。 その中に、[開発]⇒[コントロール]などから InlineShapeを配置できると思います。 そこで質問なのですが、 テキストボックス内のInlineShapeの情報を取得するには どのようにしたら良いでしょうか? Shapeの情報であれば以下のように取得できると思います。 Dim shape As Word.shape For Each shape In ActiveDocument.Shapes '必要に応じてプロパティの値を変えます。 MsgBox (shape.Width) Next 同じようにInlineShapeの情報であれば、 以下のように取得できると思います。 Dim ishape As Word.InlineShape For Each ishape In ActiveDocument.InlineShapes '必要に応じてプロパティの値を変えます。 MsgBox (shape.Width) Next ここまでは分かったのですが、 Shape内に配置されているInlineShapeの情報を取得する方法が どうしても分かりませんでした。 もしご存知でしたら、教えて頂けませんか? ぜひよろしくお願い致します。 ※図を付けます。  図に載せたコマンドボタンの情報を取得したいと思っております。  よろしくお願い致します。

  • エクセルVBAでテキストボックスのフォントの色

    エクセル2016です。以下のコードで文字は赤になりますが、これをRGB方式ではなくColorindex=3で指定するにはどう書き直せばよろしいでしょうか? Sub TEST03() With Sheets("Sheet1").Shapes("TextBox 3").TextFrame2 With .TextRange .Text = "TEST/TEST/03" .Font.Name = "Meiryo UI" .Font.Bold = msoTrue .Font.Size = 16 .Font.Fill.ForeColor.RGB = RGB(255, 0, 0) .ParagraphFormat.Alignment = msoAlignCenter End With .VerticalAnchor = msoAnchorMiddle End With End Sub 別途、Sheets("Sheet1").Shapes("TextBox 1").TextFrame.Characters.Font.ColorIndex = 3 と書けば赤になりますが、Sub TEST03()のRGB = RGB(255, 0, 0)の代わりに指定する方法が知りたいのです。 よろしくお願いします。