- ベストアンサー
WORD2010 囲み線を一括置換
WORD2010を利用しています。 囲み線で囲まれている文字を一括でダブルクォーテーション(”文字”)に置換することは可能でしょうか? どなたか詳しい方が居りましたら、ご教示をお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは うまく行くかどうか全く怪しいですけど、 Sub test() Dim i As Integer Dim j As Integer Dim s As Integer Dim o As Variant i = 0 j = 0 For Each o In ActiveDocument.Words i = i + 1 If i >= ActiveDocument.Words.Count Then Exit For End If ActiveDocument.Words(i).Select If Selection.Font.Borders(1).LineStyle = wdLineStyleNone Then Else Selection.Text = """" & ActiveDocument.Words(i) & """" i = i + 3 ActiveDocument.Words(i).Select Do Until Selection.Font.Borders(1).LineStyle = wdLineStyleNone If ActiveDocument.Words(i - 1) = """" Then ActiveDocument.Words(i - 1).Select Selection.Text = "" i = i - 1 End If i = i + 1 ActiveDocument.Words(i).Select Loop ActiveDocument.Words(i - 1).Select Selection.Text = Selection.Text & """" End If Next Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = """""" .Replacement.Text = """" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute Replace:=wdReplaceAll End Sub これで、出来ますか? テストブックで試して下さい。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
Wordにおいて、囲み線は、ホームー囲み線(Aの文字の周りに▢のボタンの機能)を使ったものとしての話です。 ケースによっては、下記の至らぬ点は、囲み線を囲む語句群が判っている場合(したがって数も多くない、場合です) ==>文章の囲み線実情に応じて下記を行う場合のコードは、できるかどうかわかりませんが、考えてみます。 WordのVBAで Sub kakoikomi() Selection.Find.Font.Borders.Enable = True End Sub を実行しておきます。 ーーー Sub 囲い線変換2() ' 囲み線のある東京都, 築地市場, 議会の3語(例)を捉える こういう文章例を今回仮に作ってテストしてください。 t = Array("", "東京都", "築地市場", "議会") Dim Test As Document For i = 1 To 3 For Each Test In Documents With Test.Content.Find .Text = t(i) MsgBox .Text .Font.Borders.Enable = True .MatchByte = True .MatchCase = True With .Replacement .Text = """" & t(i) & """" .Font.Bold = True .Font.Color = wdColorRed End With .Execute Replace:=wdReplaceAll End With Next Test Next i End Sub これで囲み線を残したまま、語の前後を””と"”で囲みます。 ーー その後、ワードVBAで、すべての囲み線を抹消します。 Sub 書式を抹消する() '文字書式を抹消 '----------------------------------- With ActiveDocument With .Range.Font .Borders(1).LineStyle = wdLineStyleNone '囲み線を解除 End With End With End Sub
お礼
ご確認&ご教示いただき有難うございます。 囲み線に入る文字については不特定多数のため、予め確認することが難しいです。説明が悪くお手数お掛けしてしまいました。 VBAについてはまだまだ未熟者ですが、参考にさせていただきます。
- narashingo
- ベストアンサー率74% (10168/13677)
2013で確認してみましたが、いきなりは「置換する文字列」の窓には囲み線を含んで入らないようですね。 もし、囲み線のある文字列の種類が1つであれば、次のページにあるように、文書全体を選択の上、囲み線をまず一括削除してから、その文字列を"文字列"で置換する方法になるのでしょうか。 (文字の「囲み線」を一括削除) http://mbp-kanagawa.com/saglasie/column/11442/ 囲み線のある異なる複数の文字列がある場合は、最初の文字列をドラッグして選択した後に、Ctrlキーを押しながら、当該置換したい対象の囲み線のある文字列を順次ドラッグして選択できるようですから、その状態で一括削除してから、置換を実行する方法はあると思います。 ページ数が多いと、囲み線のある文字列を一括選択するのは少々大変なので、ページごとに処理をするのでしょうか。
お礼
確認していただき有難うございます。 いろいろとご確認していただき恐縮ですが、不特定多数の囲み線があるため、抜けがあったり上手くいきませんでした。 お手数おかけしました。
お礼
確認&ご教示いただき有難うございます。 VBAマクロまで作成していただき恐縮です。 上記マクロでダブルクォーテーションが付きました。 ※囲み線はそのままでした。 有難うございました。