Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

単語の境界を無視して折り返す方法

2,169 views
Skip to first unread message

kokada

unread,
Sep 29, 2009, 6:58:02 AM9/29/09
to
すみません。
調べてみたのですが、良い方法が見つからなかったので質問です。

PowerPoint2003で、プログラミングの解説のためコードを貼り付けたいと考えているのですが、英数字の場合、単語の境界を考慮した折り返しが自動的に行われてしまいます。
例えば
------------
int main(argc, char*argv[]) {printf("Hello World !\n"); return 0;}
------------
のようなサンプルがあった場合、
------------
int
main(argc,
char*argv
[])
{printf("
Hello
World
!\n");
return 0;}
------------
となってしまいます。

これをプレースホルダーの横幅で以下のようなイメージで強制的に折り返してやりたいと思っています。例えば横幅10文字として以下のように。
------------
int main(
argc, cha
r*argv[])
{printf(
"Hello Wo
rld !\n")
; return
0;}
------------
昔、MSX-FAN とかの雑誌で良くあった雑誌で1画面プログラムのようなイメージです。

手作業で改行入れてそろえてやっても良いのですが、単語の途中でもおかまいなしに、プレースホルダーの境界位置で強制的に折り返す方法とか、もしご存知の方がおられたらコメントいただけると助かります。

sum

unread,
Sep 29, 2009, 10:31:30 AM9/29/09
to
# 横幅10文字としての例が 9文字折り返しになってますが???

PowerPointの中ではできなさそうなので、
Wordで横幅10文字で自動折り返しのテキストボックスを作成し、
PowerPointは挿入→オブジェクト→Word文書を作成して、
そこにWordのテキストボックスを貼り付けすることで、
お望みのようなことは可能と思います。
Word2003/PowerPoint2003で確認をしました。

なお、Wordのテキストボックス内の文字列ですが、
段落設定の体裁タブで、英単語の途中で改行するにチェックと
等幅フォントを使うという前提です。

--
sum (Susumu Zenba)


"kokada" <kok...@discussions.microsoft.com> wrote in message
news:2B0E7DBA-3640-46F6...@microsoft.com...

kokada

unread,
Sep 29, 2009, 9:53:01 PM9/29/09
to
折り返しが9文字!
本当ですね。失礼しました。

PowerPoint 単体では出来そうにない場合に OLE で別アプリ貼り付けるというのは盲点でした。
早速試してみたところ、望み通りの表示結果を得ることが出来ました。
ありがとうございます。

アドバイスいただいた点を手がかりにいろいろ調べてみたところ、PowerPoint 2003
単独でも「英単語の途中で改行する」の設定は可能であることが分かりましたので報告します。やり方は単純で、マクロを用いて
ActiveWindow.Selection.TextRange.ParagraphFormat.WordWrap を叩いて True/False
を設定するだけです。
OLE として貼り付けると、内容がアウトラインに出て来てくれませんが、これなら、アウトラインにも内容が表示されるのは利点でしょう。

以下蛇足ですが、見つけた方法です。
興味のある人の参考になれば幸いです。

まず、PowerPoint が Word
と同等の段落設定機能を持ってくれれば、綺麗に解決できるのだけどと思い、最新版では実装されていないのかと調べてみたところ、なんと PowerPoint
2007 では、段落の設定ダイアログが追加されており「英単語の途中で改行する」の項目もきちんと準備されていました。
面白いのはここからですが、PowerPoint 2007 で「英単語の途中で改行する」を設定し、一定文字数で折り返しを行った .ppt ファイルを
PowerPoint 2003 で開いた場合どうなるかと言う点です。
なんと、PowerPoint 2003 でも英単語の途中で改行して一定文字数で折り返されたプレースホルダーが表示できてしまいます。
つまり、PowerPoint 2003 では、UI
こそ実装されてはいないものの、内部的はに「英単語の途中で改行する」の機能を備えている疑いが濃厚であると(ニヤリ)。

ここまで分かってしまえば、あとはその機能はどこを叩けば起こせるです。
こんな時は常套手段であるマクロの記録です。
とりあえず PowerPoint 2007 で行う操作をマクロ記録して記録結果を見れば、どこを叩くべきか分かるはずです。
そこで早速 PowerPoint 2007 でマクロ記録を・・・と思ったのもつかの間、なんと PowerPoint 2007
ではマクロの記録機能が見当たらないではないですか!!!

ヘルプを見ると以下のように、削除され旨が高らかに宣言されています。
> マクロの記録は、頻繁に行う作業を自動化するために使用されていましたが、
> Microsoft Office PowerPoint 2007 では利用できません。
> 代わりに、Visual Basic for Applications (VBA) を使用して
> マクロを作成または編集することができます。
がっかりにも程があります。

まぁ、そうは言ってもどうせ Microsoft Office ファミリですし、どうせ内部では同じオブジェクトを利用しているに違いありません。Word
2003 が叩いている機能を叩けば、どうせ PowerPoint 2003 でも同じことが出来るでしょう。
面倒だなーと思いながらも Word 2003
ではどこを叩いているのか、マクロ記録を行い調べてみたところ、Selection.ParagraphFormat.WordWrap を True/False
にしていることが分かりました。

以上の結果から以下のマクロを作成しました。
-----------------------------------
Sub WordWrapOn()
Selection.ParagraphFormat.WordWrap = True
End Sub
Sub WordWrapOff()
Selection.ParagraphFormat.WordWrap = False
End Sub
-----------------------------------
これは、Word 2003 では当然期待通りの動作をしてくれます。
しかし肝心の PowerPoint 2003 では、
> 実行エラー '424':
> オブジェクトが必要です。
となり、実行不能でした。

PowerPoint 2003 では実装されてないのでしょうか?
ですが、プロパティやメソッドではなくオブジェクトがないと言われている点が気になります。Selection が取れていないと言うことかもしれません。
ですのでとりあえず PowerPoint 2003 でフォント色の変更をマクロで記録してみたところ、
> ActiveWindow.Selection.TextRange.Font.Color.RGB = RGB(Red:=153, Green:=0, Blue:=51)
のように AcriveWindow.Selection.TextRange 以下のプロパティを叩いていることが分かりました。

以上より、以下のマクロを作成しました。
----------------------
Sub WordWrapOn()
ActiveWindow.Selection.TextRange.ParagraphFormat.WordWrap = True
End Sub
Sub WordWrapOff()
ActiveWindow.Selection.TextRange.ParagraphFormat.WordWrap = False
End Sub
----------------------
これで、 PowerPoint 2003 からも「英単語の途中で改行する」の機能が利用可能になりました。

以上です。

0 new messages