ここから本文です

解決済みのQ&A

MS-Word2003マクロにて、スタイル変更+スタイルに合わせたオートシェイプ描画を1...

xtend_hsさん

MS-Word2003マクロにて、スタイル変更+スタイルに合わせたオートシェイプ描画を1つのマクロで行う方法を教えて下さい。

MS-Word2003マクロにて、スタイル変更+スタイルに合わせた
オートシェイプ描画を1つのマクロで行う方法を教えて下さい。

スタイルの変更と、AddShapeによる固定座標への図形描画は
できるのですが、選択された行(スタイルを変えたい行)の位置を
基準とした図形の描画方法が分かりません。

やりたいことは、
1)スタイル設定したい任意の行へ移動
2)マクロを実行

・スタイル1へスタイルを変更
・スタイル1に対する飾り図形
(例えば、先頭3文字に掛かる灰塗の四角形(レイアウト=背面))を描画

横位置は固定なので、選択行(カレント行)の行数を求めて、AddShapeで
指定するポイント数へ変換できればいけそうなのですが。。。

  • 質問日時:
    2008/5/7 12:08:49
  • 解決日時:
    2008/5/12 11:42:55
  • 閲覧数:
    1,339
    回答数:
    1
  • お礼:
    知恵コイン
    100枚

ベストアンサーに選ばれた回答

crystal_cageさん

InformationプロパティのwdVerticalPositionRelativeToPageを使えば実現できるかと思います。
下記コードはサンプルです。オートシェイプの大きさや書式は適当に変更してください。
---------------------------------------------------------------------------------------
Sub オートシェイプ()
Dim X As Double
Dim Y As Double

'10行目に移動
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=10
'スタイルを「見出し 1」に設定
Selection.Style = ActiveDocument.Styles("見出し 1")

'選択位置の座標取得
'横位置が固定であるならばXの値を任意で設定
X = Selection.Information(wdHorizontalPositionRelativeToPage)
Y = Selection.Information(wdVerticalPositionRelativeToPage)

'オートシェイプ挿入
ActiveDocument.Shapes.AddShape(msoShapeRectangle, X, Y, 36#, 18#).Select

'オートシェイプの書式設定
With Selection.ShapeRange
.Fill.Visible = msoTrue
.Fill.Solid
.Fill.ForeColor.RGB = RGB(192, 192, 192)
.Fill.Transparency = 0#
.ZOrder msoSendBehindText
End With

End Sub
---------------------------------------------------------------------------------------

また、オートシェイプではなく網掛けをするなら下記コードのようになるかと思います。
---------------------------------------------------------------------------------------
Sub 網かけ()
'10行目に移動
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=10
'スタイルを「見出し 1」に設定
Selection.Style = ActiveDocument.Styles("見出し 1")
'右から3文字選択
Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend

'選択文字の文字の網かけ設定
With Selection.Font
With .Shading
.Texture = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorGray25
End With
.Borders(1).LineStyle = wdLineStyleNone
.Borders.Shadow = False
End With
End Sub
---------------------------------------------------------------------------------------

なお、Informationプロパティに関しては下記Webページに詳細な説明が記載されています。

「Information プロパティ」
http://www.msdn.net/library/ja/default.asp?url=/library/ja/vbawd11/...

質問した人からのお礼

  • 降参ありがとうございました。
    解決の糸口がつかめました!
  • コメント日時:2008/5/12 11:42:55

グレード

Q&Aをキーワードで検索:

総合Q&Aランキング

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。

知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する