Word VBA質問箱 IV

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

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


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

【301】特定のスタイルのテキスト枠のみ削除する timtamlover 05/5/10(火) 11:38 質問[未読]
【304】Re:特定のスタイルのテキスト枠のみ削除する こば 05/5/12(木) 17:15 回答[未読]
【306】Re:特定のスタイルのテキスト枠のみ削除する timtamlover 05/5/12(木) 17:45 質問[未読]
【307】試行錯誤してみましたが。。。 timtamlover 05/5/16(月) 18:02 質問[未読]
【308】Re:試行錯誤してみましたが。。。 こば 05/5/17(火) 15:14 回答[未読]
【309】Re:特定のスタイルのテキスト枠のみ削除する timtamlover 05/5/23(月) 10:17 お礼[未読]

【301】特定のスタイルのテキスト枠のみ削除する
質問  timtamlover  - 05/5/10(火) 11:38 -

引用なし
パスワード
   FrameMakerのファイルをRTF形式に変換、
その後、WORDファイルに変換したもので作業しています。

RTFに変換する際、画像は消えてしまい、そのファイル名がテキスト枠に書かれて残ります。
このときの、ファイル名は、api.graphiclabelというスタイルになっています。

ファイル名の書かれたテキスト枠のみを削除したく、マクロの記録でマクロを作ったのですが、マクロを実行しても何も起こりません。

ひょっとして、テキスト枠内のスタイルをマクロは検索できないのでしょうか?

以下、作成したマクロです。

Sub FileName()
  Selection.Find.ClearFormatting
  Selection.Find.Style = ActiveDocument.Styles("api.graphiclabel")
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find
    .Text = ""
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = True
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
End Sub

【304】Re:特定のスタイルのテキスト枠のみ削除する
回答  こば  - 05/5/12(木) 17:15 -

引用なし
パスワード
   こばです。こんにちは。

Selection.Find.Execute Replace:=wdReplaceAll
は、地の文章にカーソルがあるときは地の文章にしか使えないのかもしれません。

たとえば、
インライン以外のテキストフレームは、
シェイプオブジェクトとしてRangeプロパティが取得可能です。

Dim myRange As Range
Dim Shp As Shape

For Each Shp In ActiveDocument.Shapes
 Set myRange = Shp.TextFrame.TextRange
 Debug.Print myRange.Text
 myRange.Find.Execute FindText:="", Format:="api.graphiclabel", _
   ReplaceWith:="", Replace:=wdReplaceAll
        
Next

こんなんでどうでしょう?
(WinXP & Word2003)

【306】Re:特定のスタイルのテキスト枠のみ削除する
質問  timtamlover  - 05/5/12(木) 17:45 -

引用なし
パスワード
   こばさん、ありがとうございます。

こばさんのマクロを実行したところ、
実行時エラー'13':
型が一致しません。
という、エラーが発生してしまい、

デバッグしてみたところ、どうやら
> myRange.Find.Execute FindText:="", Format:="api.graphiclabel", _
>   ReplaceWith:="", Replace:=wdReplaceAll
の辺りに問題があるようです、、、

こちらの環境は、Windows2000&Word2003です。
修正お願いできますでしょうか。

【307】試行錯誤してみましたが。。。
質問  timtamlover  - 05/5/16(月) 18:02 -

引用なし
パスワード
   頼りきりでは、申し訳ないので、自分でも試行錯誤してみました。
以下のマクロで、レイアウト枠内にあるapi.graphiclabelという
スタイルのテキストボックスを探すところまでは、できました。

が、そのテキストボックスを削除するコマンドがわからず困っています。

本当の希望は、api.graphiclabelを別のスタイル(例えば、標準)に
変更したいのですが、、、

どちらの方法でも構いませんので、お分かりになる方、ぜひご教示
お願いいたします。

Sub Macro()
For Each s In ActiveDocument.Shapes
 With s.TextFrame
  If .HasText = True Then
   If Selection.Find.style = "api.graphiclabel" Then
   ---ここになにか追加したいのですが---    
   End If
  End If
 End With
Next
End Sub

【308】Re:試行錯誤してみましたが。。。
回答  こば  - 05/5/17(火) 15:14 -

引用なし
パスワード
   >Sub Macro()
>For Each s In ActiveDocument.Shapes
> With s.TextFrame
>  If .HasText = True Then
>   If Selection.Find.style = "api.graphiclabel" Then
>   ---ここになにか追加したいのですが---    
>   End If
>  End If
> End With
>Next
>End Sub
レス遅くてすみません。
おそらく、
シェイプを選択状態にして,
選択中の1つ目のシェイプを削除、
でOKだと思います。

   If Selection.Find.style = "api.graphiclabel" Then
    s.Select
    selection.InlineShapes(1).Delete
   End If

とりいそぎ。

【309】Re:特定のスタイルのテキスト枠のみ削除する
お礼  timtamlover  - 05/5/23(月) 10:17 -

引用なし
パスワード
   ありがとうございました。
解決できました。

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