• 締切済み

選択範囲の座標値の抽出

Word文書で、現在選択している行範囲を、オートシェープで 囲みたいと思っています。しかし、選択範囲の座標値取得の仕方に 検討がつきません。座標以外でも囲める方法などありましたら、 宜しくお願いします。

みんなの回答

  • taka108
  • ベストアンサー率44% (8/18)
回答No.5

回答番号No.3のコードで、 Selection.EndKey Unit:=wdLine, Extend:=wdMove を Selection.MoveRight Unit:=wdCharacter, Count:=1 に 変更したらうまくいきました。 変更前は「END」キー、変更後は「→」キーを押すことに対応します。 「→」キーを押すと選択範囲の終了位置にカーソルが移動します。 「END」キーでは文末にカーソルが移動します。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

「行間の高さ」とはどういう意味で使われていますか? 上の行の文字と下の行の文字の間隔ですか? よく分かりませんが下記で取得出来る値のことでしょうか? MsgBox Selection.ParagraphFormat.LineSpacing 回答番号:No.3で提示したコードで選択範囲を矩形で囲むことができるようになっていると思います。 それでは駄目なのでしょうか? ただし、いろいろ不具合が発生します。 例えば、複数行を選択している場合、最終行の最終列位置から座標を取っています。 従って、中間行の文字列数が最終行のそれより大きい場合、枠内に文章が収まらない現象が発生します。 それと、選択範囲に最終行が含まれる場合も上手くないです。 まだ手を付けていませんが、改善に着手するつもりです。 Selectを使わずに、Rangeオブジェクトでやれないかな、とも考えているのですが、私のレベルでは難しいです。 Hamstar225さんが書かれたコードを拝見できないでしょうか。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

進んでいますか? サンプルです。試しに組んでみました。 Sub test1() Dim x As Double Dim y As Double Dim w As Double Dim h As Double 'カーソル位置座標取得 x = Selection.Information(wdHorizontalPositionRelativeToPage) y = Selection.Information(wdVerticalPositionRelativeToPage) Selection.EndKey Unit:=wdLine, Extend:=wdMove w = Selection.Information(wdHorizontalPositionRelativeToPage) Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1 h = Selection.Information(wdVerticalPositionRelativeToPage) 'オートシェイプ挿入 ActiveDocument.Shapes.AddShape(msoShapeRectangle, x, y, w - x, h - y).Select Selection.ShapeRange.Fill.Visible = msoFalse Selection.Collapse End Sub

Hamstar225
質問者

お礼

度々のご返信、ありがとうございます。 少しずつ、進み、 x = Selection.Information(wdHorizontalPositionRelativeToPage) y = Selection.Information(wdVerticalPositionRelativeToPage) カーソルの位置にシェイプを追加することができました。 ただ、終了位置の座標がわからなくて、 サイズが設定できないという状態でした。 xls88さんの終了位置取得方法にて、再度、 作成してみたいと思います。 大変、助かりました。ありがとうございます。

Hamstar225
質問者

補足

申し訳ありません、行間の高さを取得するには どうすれば宜しいのでしょうか? 行間いっぱいに長方形を描きたいので、 フォントサイズから取得したのでは、 対応できず、困っています。 よろしくお願いします。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

取りあえず下記ページを紹介します。 [W_WD98] カーソル位置の情報を取得する方法 http://support.microsoft.com/kb/410949/ja

Hamstar225
質問者

お礼

ご返信、ありがとうございます。 なんとなくですが、Helpを見てみると、 出来そうな気がします。 ただ、フォントサイズ、フォントのパターンで、 オートシェイプで囲う範囲を 計算しないといけないことに気づきました。 検討後、再挑戦してみます。 貴重なご意見、ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 私の解釈が間違っていたらごめんなさいね! Wordのオートシェイプの座標値というのは私は考えた事がありません。 質問内容では本文をオートシェイプで囲って色を付けたいような感じに受け取れるので その方法になりますが・・・ オートシェイプを挿入時に図形描画キャンバスが出てくると思います。 Deleteキーを押してキャンバスを消し、オートシェイプを挿入 そして囲みたい文字の上にオートシェイプを移動させ、 右クリック → 順序 → テキストの背面へ移動 細かい移動とか大きさ調整はAltキーを押しながら行えばいいと思います。 余計なお世話かもしれませんが、私はオートシェイプで本分を囲うより テキストボックスを使う方が多いです。 以上、当方使用のWord2003での回答でしたが、 的外れの回答なら読み流してくださいね。m(__)m

Hamstar225
質問者

お礼

返答、ありがとうございます。 説明不足で申し訳ありません。 Word文書の選択されている文字列範囲の座標を取得し、 マクロによって、オートシェイプで囲みたいと思っています。 tom04さんの操作も私自身、知りませんでしたので、 貴重な意見を頂き、ありがたいです。

関連するQ&A

  • Photoshopのスクリプト(JavaScript)で、選択範囲の座標を抽出したい

    いつも質問にお答え頂きまして有難うございます。 業務で使用している Adobe Photoshop CS2(Windows版)で、 選択範囲の座標を取得するスクリプト(JavaScript)を 作ることになりました。 とりあえず選択範囲の左上のX座標を取得するために、 以下のステートメントを書きました。 alert(activeDocument.selection.bounds[0]); ところが、以下のようなエラーが出てしまいます。 Error 8800: Photoshop の一般エラーが発生しました。 -「取得」コマンドは現在使用できません。 Line: 10 -> alert(activeDocument.selection.bounds[0]); ちなみに bounds[0] を left や x に変えても結果は同じでした。 alert(activeDocument.selection.left); alert(activeDocument.selection.x); どうすれば正常に動くようになるでしょうか? ご教示頂けますと幸いです。

  • Word2003:範囲選択についてお尋ねします

    Word2003についてお尋ねします。 文書上に、ある文章があったとします。 それを、きりとりなどをするために、 Shiftキー + ↑↓ で、いっかつに黒くしたいのです。 仮に、上の3行をそうするとします。 この時、カーソルが、上の「↑」の所にあったと します。「↑」からやると、「↑」の行全部が 黒く選択されず、半分だけ選択されてしまいます。 一太郎の場合は、その行全部も選択されます。 Wordも、何らかの設定で一太郎のようにできませんか? お手数ですが、どうぞよろしくお願いいたします。

  • Word VBA 選択範囲のみ

    教えてください Windows10 Word2016です WordのVBAで例えば、 --------------------------- 選択範囲のみ 検索置換 ----------- 選択範囲のみ 空白行削除 ----------- 選択範囲のみ 段組を変更 ---などなど-------------------- この「選択範囲のみ」の記述はどう書けば良いのでしょうか 「マクロの記録」でいろんな事書いてますが、「選択範囲のみ」の書き方がわかりません 検索置換、空白行削除、段組を変更  それぞれに書き方が違うのでしょうか お願いします

  • EXCEL,WORDの選択範囲を自動で画像ファイル化したい

    EXCELまたはWORDで作成したファイルにて、選択された部分を自動的に画像ファイル(GIFファイルなど)にする方法はないでしょうか? 現在、Excelで作成した内容(テキスト、オートシェイプ、画像の貼り付けあり)を範囲選択し、画像処理ソフト(PaintShopPro)にコピー・貼り付けしてGIFファイルを作成しているのですが、選択する範囲が固定できまっている(例:EXCELだとA1:D20、など)場合、毎回ファイルを開いて範囲選択して上記作業を行うのがファイル数も多く煩雑なので、なんとか自動化できないものかと思っています。 ExcelやWord側でのマクロや、上記要望を満たしてくれるソフトなどがもしあれば、是非教えていただけないでしょうか。 よろしくお願いいたします。

  • オートシェイプの曲線の交点の座標を求める方法

    オートシェイプの曲線の交点の座標を求める方法 パワーポイントでオートシェイプの曲線を使って図を描いたのですが、わけあって交点の座標を求める必要が生じました。 VBAを使うことができるのですが、どのようにすると交点を求められるでしょうか。

  • Wordでオートシェイプが選択できません(泣)

    文書フォームに「(A・B・C)」とあって、Bを選択するのに、 オートシェイプで楕円を使ったのですが、 いつもは書式設定のレイアウトを「内部」にしているのですが、 なぜかこの文書ではできなかったので、レイアウトを「背面」にしました。 それで印刷するとBの文字が消えてしまったので、「塗りつぶしなし」にしました。 何ヶ所かあって、上記の方法でOKとなったのですが、一箇所だけどうしても先に入力したオートシェイプが選択できず、塗りつぶしなしの選択ができなくなってしまいました。 オートシェイプのまわりにそーっとマウスを沿わせても、十字矢印がでてきません。どうしたらよいでしょうか? あと2時間弱でこの書類を持って出なくてはならないのですが・・。

  • Word97と2000の行送り

    お世話になります。 Word97で作成した文書をWord2000で参照すると非常に体裁(見た目)が悪くなる場合がありました。 [ページ設定]-[行送り]の値を変更すると(例:10.85→12)にすると体裁が整いました。 しかし、Word97で見るときは当然元の設定(10.85)でなければいけません。 このような現象は、別バージョンのWordで参照する可能性がある文書の場合、仕方が無いことなのでしょうか? それとも、回避方法があるのでしょうか? ※このWord97文書は、オートシェイプによる図を使っております。

  • ワード上Shapeの位置情報を統一基準で取得したい

    ワードVBAを書いています。 お客さんのワード文書にShapeが貼り付いていて、その位置情報を、ページの境界線からの距離(ポイント)で取得したいと思っています。 shape.RelativeHorizontalPositionは、wdRelativeHorizontalPositionColumn となっていました。 これはどういう意味なんでしょうか? 色々調べたのですが、なかなかいい情報が見つかりません。 shape.Left/Topを、何の座標と足せば、見た目の座標になるのでしょうか? 詳しい方がおられたら教えてください。

  • WORDで選択範囲をペーストしても上書きされない

    WORDで選択範囲をペーストし、上書きするにはどうしたらいいのでしょうか? WORD2000を使っています。システムの設定は 上書きではなく、挿入になっています。文字を選択した状態でペーストするのですが、選択した文字が上書きされません。 例えば 「あいうえお。かきくけこ。」 という文書があって、 「      かきくけこ。」 の部分を選択します。そこにあらかじめコピー しておいた「12345。」という文字を ペーストするのですが、 「あいうえお。12345。かきくけこ。」 となってしまいます。 「あいうえお。12345。」として文字を 置き換えたいのですが どうすればいいのでしょうか? ちなみにWORD以外のソフトではしっかり 「あいうえお。12345。」と置き換わります。

  • word2007でのオブジェクトの複数選択

    Word2007での複数のオブジェクトの選択方法がよく分かりません。 今までWord2003では、例えばオートシェイプ・クリップアート・ワードアート・テキストボックス・図(写真とかイラスト)を同時に選択したい時には、クリップアートやワードアートも前面に出してからシフトキーを押しながら各々をクリックしていくと上手く選択できました。また、図形描画ツールバーの中の「オブジェクトの選択」を使うと、全ての図を大きくドラッグで囲むだけで一気に選択できていました。 2007で同じことをしようとすると、テキストボックス・オートシェイプ・ワードアート(全て前面にしておく)同士 または クリップアートと図同士 なら複数選択できるのですが、混在させた状態の複数選択は出来ません。「オブジェクトの選択」を使って囲むと、テキストボックス・オートシェイプ・ワードアート(全て前面にしておく)だけが選択されます。クリップアートや図(写真やイラスト)は選択できません。 2007で、オートシェイプ・クリップアート・ワードアート・テキストボックス・図(写真とかイラスト)を混在させて複数選択するには、どうすればいいのか教えてください。2003ではよく使っていたので、困っています。

専門家に質問してみよう