Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


218 / 308 ツリー ←次へ | 前へ→

【265】レイアウト枠の検索 timtamlover 05/3/25(金) 9:39 質問[未読]
【268】Re:レイアウト枠の検索 名乗るほどのものでは 05/3/30(水) 16:39 回答[未読]
【269】Re:レイアウト枠の検索 timtamlover 05/3/31(木) 9:12 質問[未読]
【270】Re:レイアウト枠の検索 名乗るほどのものでは 05/3/31(木) 16:05 発言[未読]
【286】Re:レイアウト枠の検索 timtamlover 05/4/12(火) 10:31 質問[未読]
【288】Re:レイアウト枠の検索 名乗るほどのものでは 05/4/15(金) 14:24 発言[未読]
【292】Re:レイアウト枠の検索 timtamlover 05/4/21(木) 10:48 質問[未読]

【265】レイアウト枠の検索
質問  timtamlover  - 05/3/25(金) 9:39 -

引用なし
パスワード
   レイアウト枠を検索したくてVBEのヘルプを探したら、
↓のようなものを見つけました。

ですが、このままだとドキュメント内の一番最初の
レイアウト枠しか探せないみたいなんです。
次から次へと検索する方法をご存知でしたら、教えて
いただけないでしょうか。よろしくお願いします。

Sub Macro1()
With ActiveDocument.Content.Find
  .Text = ""
  .Frame.TextWrap = False
  .Execute Forward:=True, Wrap:=wdFindContinue, Format:=True
  If .Found = True Then StatusBar = "レイアウト枠がありました。"
  .Parent.Select
End With
End Sub

【268】Re:レイアウト枠の検索
回答  名乗るほどのものでは  - 05/3/30(水) 16:39 -

引用なし
パスワード
   Sub test()
For Each myFrame In ActiveDocument.Frames
  myFrame.Select
Next myFrame
End Sub

こんな感じで次々には、選択はしていますが、
そもそもレイアウト枠は同時に複数選択できるのでしょうか?
やりたい作業をもう少し細かく言って頂ければ、
もう少しお力になれるかもしれません。

▼timtamlover さん:
>レイアウト枠を検索したくてVBEのヘルプを探したら、
>↓のようなものを見つけました。
>
>ですが、このままだとドキュメント内の一番最初の
>レイアウト枠しか探せないみたいなんです。
>次から次へと検索する方法をご存知でしたら、教えて
>いただけないでしょうか。よろしくお願いします。
>
>Sub Macro1()
>With ActiveDocument.Content.Find
>  .Text = ""
>  .Frame.TextWrap = False
>  .Execute Forward:=True, Wrap:=wdFindContinue, Format:=True
>  If .Found = True Then StatusBar = "レイアウト枠がありました。"
>  .Parent.Select
>End With
>End Sub

【269】Re:レイアウト枠の検索
質問  timtamlover  - 05/3/31(木) 9:12 -

引用なし
パスワード
   説明不足ですみませんでした。
やりたい作業は、
1. レイアウト枠を探す
2. レイアウト枠がテキストボックスを含んでいるかチェックする
3. テキストボックスがある場合、テキストボックス内の文字列を
  レイアウト枠の外(枠のすぐ上)にコピー&ペーストする
ここまで終わったら、1.に戻って作業を繰り返す。
ということなんです。

2.や3.まで含めてマクロ化できれば、さらにうれしいのですが、
今のところ1.のマクロも作成できずにつまづいている状況です。

「レイアウト枠を次から次へと検索する」というのでは、
伝わらないですよね。。。すみません。

「カーソルのある位置以降にあるレイアウト枠を検索する」
ということになるのでしょうか。

よろしくお願いします。

【270】Re:レイアウト枠の検索
発言  名乗るほどのものでは  - 05/3/31(木) 16:05 -

引用なし
パスワード
   こんな感じかなぁ、と思ったけど、
私の環境では、失敗でした。

Sub test()

Dim setObject As Object
Dim tmpText As String

For Each myFrame In ActiveDocument.Frames
  myFrame.Select
  Set setObject = Selection
  tmpText = setObject.Text
  Selection.MoveUp
  Selection.Text = tmpText
Next myFrame

End Sub

レイアウト枠の意味がまだよくわかっていないので、
また、思いついたら回答させて頂きます。

▼timtamlover さん:
>説明不足ですみませんでした。
>やりたい作業は、
>1. レイアウト枠を探す
>2. レイアウト枠がテキストボックスを含んでいるかチェックする
>3. テキストボックスがある場合、テキストボックス内の文字列を
>  レイアウト枠の外(枠のすぐ上)にコピー&ペーストする
>ここまで終わったら、1.に戻って作業を繰り返す。
>ということなんです。
>
>2.や3.まで含めてマクロ化できれば、さらにうれしいのですが、
>今のところ1.のマクロも作成できずにつまづいている状況です。
>
>「レイアウト枠を次から次へと検索する」というのでは、
>伝わらないですよね。。。すみません。
>
>「カーソルのある位置以降にあるレイアウト枠を検索する」
>ということになるのでしょうか。
>
>よろしくお願いします。

【286】Re:レイアウト枠の検索
質問  timtamlover  - 05/4/12(火) 10:31 -

引用なし
パスワード
   度々すいません。
以下のマクロで、カーソルがある場所以降、最初のレイアウト枠を検索できるようになりました。
「3・5・7ページにレイアウト枠のある文書の場合、1〜2ページにカーソルがあれば3ページのレイアウト枠を、4ページにカーソルがあれば5ページのレイアウト枠を検索できます。」

ですが、カーソルがレイアウト枠内にある場合、期待通りの動作になりません。
つまり、上記の期待通りの動作をさせるには、常に文書(テキスト)上にカーソルを置いておく必要があります。

カーソルの位置に関係なく、レイアウト枠を検索できないでしょうか。
よろしくお願いします。


Sub Macro1()
Selection.Find.ClearFormatting
With Selection.Find
  .Text = ""
  .Frame.TextWrap = False
  .Execute Forward:=True
End With
Selection.Find.Execute
End Sub

【288】Re:レイアウト枠の検索
発言  名乗るほどのものでは  - 05/4/15(金) 14:24 -

引用なし
パスワード
   返信が遅くなり申し訳ありません。
下記のマクロでは、レイアウト枠は検索できなかったのですが。。。
うーん、Text=""で、検索かけてるだけなので、
ちょっと、意味合いがわかりません。
検索というと違うかもしれませんが、

Sub test()

Dim setObject As Object

For Each myFrame In ActiveDocument.Frames
  myFrame.Select
  Set setObject = Selection
Next myFrame

End Sub

で、一個ずつ選択していくことはできます。

前に質問頂いていた件ですが、
レイアウト枠を一回テキストボックスに変換してやったら
いける気がするのですが、レイアウトも壊れる気も。

▼timtamlover さん:
>度々すいません。
>以下のマクロで、カーソルがある場所以降、最初のレイアウト枠を検索できるようになりました。
>「3・5・7ページにレイアウト枠のある文書の場合、1〜2ページにカーソルがあれば3ページのレイアウト枠を、4ページにカーソルがあれば5ページのレイアウト枠を検索できます。」
>
>ですが、カーソルがレイアウト枠内にある場合、期待通りの動作になりません。
>つまり、上記の期待通りの動作をさせるには、常に文書(テキスト)上にカーソルを置いておく必要があります。
>
>カーソルの位置に関係なく、レイアウト枠を検索できないでしょうか。
>よろしくお願いします。
>
>
>Sub Macro1()
>Selection.Find.ClearFormatting
>With Selection.Find
>  .Text = ""
>  .Frame.TextWrap = False
>  .Execute Forward:=True
>End With
>Selection.Find.Execute
>End Sub

【292】Re:レイアウト枠の検索
質問  timtamlover  - 05/4/21(木) 10:48 -

引用なし
パスワード
   教えていただいたマクロを実行してみたのですが。。。
全てのレイアウト枠を検索しているようなのですが、
1回のマクロ実行で、文書の最後まで検索が走って
しまうのですね。

1回のマクロ実行で、現在のカーソル位置の
次にあるレイアウト枠1つだけを検索できない
でしょうか?

レイアウト枠を検索して、枠内にあるテキストボックス内の
文字列をレイアウト枠外にコピーペーストしたいのです。
コピーペーストするマクロまで、できれば良いのですが、
数十ページの文書のどこにレイアウト枠があるのかを
探すだけでも大変なので、とりあえずレイアウト枠だけでも
検索できればよいと思っています。

通常は、検索のオプションでレイアウト枠(文字列の
折り返し:しない)を選択して、検索しているのですが
マクロの記録でこの作業をしても、上手く動きません
でした。。。

よろしくお願いします。


▼名乗るほどのものでは さん:
>返信が遅くなり申し訳ありません。
>下記のマクロでは、レイアウト枠は検索できなかったのですが。。。
>うーん、Text=""で、検索かけてるだけなので、
>ちょっと、意味合いがわかりません。
>検索というと違うかもしれませんが、
>
>Sub test()
>
>Dim setObject As Object
>
>For Each myFrame In ActiveDocument.Frames
>  myFrame.Select
>  Set setObject = Selection
>Next myFrame
>
>End Sub
>
>で、一個ずつ選択していくことはできます。
>
>前に質問頂いていた件ですが、
>レイアウト枠を一回テキストボックスに変換してやったら
>いける気がするのですが、レイアウトも壊れる気も。
>
>▼timtamlover さん:
>>度々すいません。
>>以下のマクロで、カーソルがある場所以降、最初のレイアウト枠を検索できるようになりました。
>>「3・5・7ページにレイアウト枠のある文書の場合、1〜2ページにカーソルがあれば3ページのレイアウト枠を、4ページにカーソルがあれば5ページのレイアウト枠を検索できます。」
>>
>>ですが、カーソルがレイアウト枠内にある場合、期待通りの動作になりません。
>>つまり、上記の期待通りの動作をさせるには、常に文書(テキスト)上にカーソルを置いておく必要があります。
>>
>>カーソルの位置に関係なく、レイアウト枠を検索できないでしょうか。
>>よろしくお願いします。
>>
>>
>>Sub Macro1()
>>Selection.Find.ClearFormatting
>>With Selection.Find
>>  .Text = ""
>>  .Frame.TextWrap = False
>>  .Execute Forward:=True
>>End With
>>Selection.Find.Execute
>>End Sub

218 / 308 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
207137
(SS)C-BOARD v3.8 is Free