Top > OOobbs3 > 53

OOobbs3/53 Edit

  • サマリ: 実行するたびに「ぶら下がりインデント」を深くしたい(マクロで)
  • 環境: Writer
  • 状態: 解決
  • 投稿者: かつ?
  • 投稿日: 2011-04-28 (木) 23:39:31

質問 Edit

マクロを1度実行するごとに、カーソルのある行の「左インデント」の値と、「一行目のインデント」の値を読み取って、ぶら下がりインデントを12ポイントずつ深くしたいと考え、次のようなマクロを作ってみました。

試してみると、第1段落では思い通りの動作をするのですが、第2段落以降では、繰り返しマクロを実行してインデントをより深くすることができなかったり、第1段落のインデントの深さに連動するような動作になってしまいます。

どこがどうおかしいのか、どう変更すればいいのか、お教えください。

Sub HangIndent
	dim document   as object
	dim dispatcher as object
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

	oTextCursor = ThisComponent.Text.createTextCursor()
	dim args1(1) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "LeftRightMargin.TextLeftMargin"
	args1(0).Value = oTextCursor.ParaLeftMargin + 423
	args1(1).Name = "LeftRightMargin.FirstLineIndent"
	args1(1).Value = oTextCursor.ParaFirstLineIndent - 423
	dispatcher.executeDispatch(document, ".uno:LeftRightMargin", "", 0, args1())
End Sub

回答 Edit

  • 動作を確認していませんが、ThisComponent.Text.createTextCursor() では現在のカーソルではなく、ドキュメント中を移動できる見えないカーソルを利用していることになります。表示されているカーソル(ビューカーソル)を利用したければ、OOoBasic/Writer/ViewCursor を参照してください。 -- はにゃ? 2011-04-29 (金) 00:13:39
  • ViewCursor を使うと、思いどおりの動作になりました。ありがとうございました。ちなみに、TextCursor は、単にマクロ起動中に画面上にカーソルの動きが見えないだけ(したがって、マクロにり向いている)と、勘違いしていました。 -- かつ 2011-04-29 (金) 10:53:37

感想,コメント,メモ Edit

  • 操作ミスで、マクロが分断されてしまいました。 -- かつ 2011-04-28 (木) 23:42:13
  • 書式のミスで、マクロが分断されてしまいました。 -- かつ 2011-04-28 (木) 23:42:34
  • 解決です。(ステータスが未解決のままなので念のため) -- かつ 2011-05-21 (土) 21:44:58
  • 勝手に解決にしてもらってかまいません。 -- はにゃ? 2011-05-21 (土) 21:48:12


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes