VBAでオートシェイプ文字幅と間隔の取得方法

このQ&Aのポイント
  • VBAでExcelのオートシェイプ内の文字幅と間隔を取得する方法について詳しく知りたいです。
  • 現在、自分が分かっている文字間隔を取得する方法として、ActiveWorkbook内の全てのワークシートとシェイプをループして、TextFrame2.TextRange.Charactersのフォントのスペーシングの値を取得する方法があります。
  • しかし、これだけでは標準、文字間隔を広げる、カーニングの設定値を取得することはできません。他の方法やコードを知りたいです。
回答を見る
  • ベストアンサー

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から設定値を取得するには?

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

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

元の値が0なので取得できないと勘違いしたのでしょう。 下記のように自分で指定してみればわかります。 Sub test()  Dim wkbWorksheets As Worksheet  Dim wksShapes As Shape For Each wkbWorksheets In ActiveWorkbook.Worksheets For Each wksShapes In wkbWorksheets.Shapes With wksShapes.TextFrame2.TextRange.Characters .Font.Spacing = 5 .Font.Kerning = 10 MsgBox .Font.Kerning MsgBox .Font.Spacing End With Next wksShapes Next wkbWorksheets End Sub

6ass3eu6
質問者

補足

カーニング値の取得方法ありがとうございました。 [文字間隔をつめる]設定値の取得は、.Font.Spacingで、マイナス値になるようですね。 [文字間隔を広げる]設定値の取得は、.Font.Spacingで、プラス値になると…。 ご指導ありがとうございました(__)。

関連するQ&A

  • 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

  • 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.二重波線

  • photoshop CS3で文字を横に、等間隔に並べたい!のですが、ど

    photoshop CS3で文字を横に、等間隔に並べたい!のですが、どうしたらいいのでしょうか。 自分でカーニングなど設定してみたものの、フォントを変えると、また間隔が変わって困り果てています。 どんな文字でも、1文字当たり、~ピクセルの幅、といった様な設定はできますか?私は、macとphotoshopしか持っていません。宜しくお願いします。

    • 締切済み
    • Mac
  • word2004でフォントの文字幅と間隔で左右の幅

    word2004でフォントの文字幅と間隔で左右の幅を狭くしたり広くしたりするのはできるのですが、上下の幅を変える方法を教えてください。

  • 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 --------------------------------------------------------------

  • フォントの高さ・幅・間隔の比率

    CADで文字サイズとして 文字の高さ・幅・文字の間隔が設定できるようになっています。 フォントはメイリオを使用します。 文字はだいたい縦長にみえます。 しかし、「漢字、ひらがな」よりも「半角の英数字、カナ」は縦長にみえます。 文字列としては 「漢字、ひらがな」「半角の英数字、カナ」が混合されたものになります。 こんな場合にフォントの高さに対して幅・文字間隔は どんな比率にすれば「美しく」見えるか悩んでいます。 また、 文字列として半角数字のみの場合も多いので、この場は別に 設定しようかと思います。 自分で色々試してみるまえに 汎用的な数値があれば、それを知りたく質問いたしました。 ご教授をお願いします。

  • 水準幅ってどうして等間隔なのですか?

    実験計画法のテキストを見ていると、当たり前のように水準幅は等間隔ですが、等間隔じゃなく設定するとまずいんですか?

  • Powerpoint 2007の文字間隔が初期設定で開いている

    Office2007のユーザーですが。 パワーポイントのテキストボックスが、最初から文字間が開いています。新しいスライドを追加しても、レイアウトの違うスライドを使っても同じく文字間隔が最初っから開いております。文字の間隔を見ると「標準」になっており、カーニングなどかかっている様子はありません。 前回の2003のデータを開いたときからこのような現象となりました。一応文字の間隔で調整しておりますが、文字の大きさを変えると、間隔も影響を受けるので非常に苦労しております。 良いご指導お待ちしております。

  • ワード2010にて:文字の変形

    ワード2010にて、縦書き文書、行と段落の間隔は2,0、HGP行書体で、サイズは32設定の、縦に潰れたフォントを使用したいのですが(つまり横に長いフォントです)、似たような質問の例を見ますと、 フォント→文字幅と間隔→倍率(C) ・・・から倍率をいじると横に長くなる・・・的な説明を見ましたが、その倍率で縦にも長くなりましたので、 使えそうにありません カーニングの項目等を変更してみましても無駄でした。 ワード2010では不可能な操作なのでしょうか? 返答をよろしくお願いします。

  • エクセル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 としても同じです。 どうやったら、シェープに書かれた文字列が取得できるのでしょうか?

専門家に質問してみよう