word最新ver?で、こちらのマクロを使用して、複数のWord文書に対して文字列リストを元に連続して置換しています。
https://stabucky.com/wp/archives/13067
ただ、オートシェイプ内だけ、置換がおこなわれないようで、その記述の追記がわかりません。
参考にしたページは、リストではなく、一個毎のようでした。
https://www.wordvbalab.com/code/2162/
追記方法をお教えいただけないでしょうか。
なお、先日はマーカーの追記をお教え頂きました。有難うございました。繁忙期でテスト出来ずお礼が出来ませんでした。。申し訳ありません。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは
mae(i)ato(i)などの配列作成コードが不明なので何をされたいのかがわかりません。
参考にされているWebは段落を削除しているように思うのですが、
それが期待する結果でしょうか?
>ただ、オートシェイプ内だけ、置換がおこなわれないようで、その記述の追記がわかりません。
#3のサンプルは、オートシェイプ内のテキストに対してなので
段落、ワード文章とかは関係ありません。従って
Word文書に対して文字列リストを元に連続して置換が上手くいっているのなら、その処理が終了以後、#3のコードを試してみてください。
mae = "aa" シェイプ内テキストの変更前文字列
ato = "BB" シェイプ内テキストの変更後文字列
別々に実行して期待する結果になったのであれば、集約できるか検討してみてください。
追記
>こちらのマクロを使用して、複数のWord文書に対して文字列リストを元に連続して置換しています。
これも上手くいっていないのでしょうか?その場合、
何をどの(参考サイトの)ように何に置換を行っているのでしょう?
Qchan1962さん
何度も有難うございました。質問がしまってしまうので、先にお礼させて下さい。
もう少しチャレンジして、理由を考えてみます。
一覧を元に、複数ファイル置換のマクロは動きます。ただ、テキストボックスの文字が置換対象から外れるため、それの機能も追加したかったのです。
マクロは難しいですね。。
お時間割いてくださり、本当にありがとうございました。
No.3
- 回答日時:
#2です
>オートシェイプ内も
とありましたのでオートシェイプを重ねるなどしてグループにしているのかな、と思いました。
ご質問にある (みんなのワードマクロ)
https://www.wordvbalab.com/code/2162/
新田様のコードを参考にすると
Sub a()
Dim mae, ato
mae = "aa"
ato = "BB"
Call 文書全体を置換(mae, ato)
End Sub
Function 文書全体を置換(mae, ato)
Dim Shp As Shape
For Each Shp In ActiveDocument.Shapes
Shp.Select
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = mae '検索する文字列
.Replacement.Text = ato '置換後の文字列
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
End Function
でどうでしょう。
No.2
- 回答日時:
こんばんは、
Excel、Wordもシェープ内にテキストを配置できるタイプは複数あるようです。
また、グループ化したシェイプはGroupItemsコレクションから対象シェイプを取得する必要があります。
Excelでの同様の質問に回答した際、少し躓きました。
WordVBAはあまり知らないのですが、参考サイトを示します。
解説などが少ないのでサンプルコードから理解するような方法になるかも
以前、リボンカスタマイズで大変参考にさせて頂きました
信頼度は高いと思います。
参考 https://www.ka-net.org/blog/?p=859
メソッドやプロパティは
Shape オブジェクト (Word)
https://docs.microsoft.com/ja-jp/office/vba/api/ …
ご質問の解釈が違っていたら、ごめんなさい
No.1
- 回答日時:
こんばんは
WordのVBAは知りませんけれど・・・
>リストではなく、一個毎のようでした。
いずれにしろ、直接的にはひとつずつ置き換えることになるでしょうから、リストのkeyの数だけループして置き換えを行えば宜しいでしょう。
ご提示のサンプルでは、置き換えたらシェイプに記入していますが(1個だけなので当然ですが)、複数回行う場合には無駄な処理になってしまいます。
文字列をまとめて置き換えてから、記入するほうが効率的と思われます。
Shape.TextFrame.TextRange.Text
で、シェイプ内の文字列を取得できるようですので、文字列操作で全部の置き換えを行ってから、戻せば宜しそうに思われます。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
※ ドキュメントを見ただけなので、はずしていたらスルーしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- その他(IT・Webサービス) 少し複雑なテキスト置換がしたいです。 2 2022/10/13 14:42
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- PDF 「PDF文書を簡単にWordで編集する方法」と 罫線が 図形で出力されるのは? 6 2022/06/14 06:51
- Excel(エクセル) エクセルの数式について教えてください。 7 2023/06/18 10:16
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- PDF I LOVE PDF利用 pdfからWordに変換について 回答お願いいたします。 無料のI LOV 1 2022/05/13 13:24
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Word(ワード) 表の縦罫線を移動するピッチ 1 2022/10/12 12:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スペースで区切られた氏名から...
-
秀丸エディタで、「-」や「ー」...
-
サクラエディタなどのエディタ...
-
cshの文字列置換
-
正規表現 特定の文字列を含む行...
-
C言語でテキストファイルの内容...
-
タイトルを一括で変換したい・・・
-
秀丸エディタで、行の後ろに倍...
-
word オートシェイプ内も一括変換
-
F9キーについて。
-
VBA 文字に半角が含まれて...
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
Excel : 3桁以上の半角数字を...
-
Excel VBAでPDFファイルをMicro...
-
EXCELからCSVにすると余計なカ...
-
VBA(テキストファイルのデータ...
-
大文字と全角文字は同じ意味で...
-
コマンドプロンプト 全角を含ん...
-
テキストをhtml変換するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スペースで区切られた氏名から...
-
VBA 置換文字がみつからない時
-
各項目がダブルクォーテーショ...
-
csvデータ ダブルクォーテ...
-
エクセル VBA 複数条件一...
-
正規表現で、特定の文字列を含...
-
csvデータのダブルクォーテーシ...
-
xmlファイル内の文字列置換
-
PowerShellでテキストの空白行...
-
C#で空白行を削除する方法
-
ハングルを日本語に置換
-
複数のパワーポイントファイル...
-
Excel・ユーザーフォームの情報...
-
C言語でテキストファイルの内容...
-
Eclipse 改行後のタブ
-
テキストファイル中の文字列の置換
-
○文字目に文字挿入
-
正規表現 特定の文字列を含む行...
-
EXCEL警告「置換対象のデータが...
-
VBscriptで「改行」と「"」を置...
おすすめ情報
有難うございます。
fujillinさんの記載された意味を考え、上記のリンクの一括置換のマクロの記述をちょっと変えたのですが、走りませんでした。。
Qchan1962さんのページも見たのですが元々あまり詳しくなく。。
すみません。再度ヒントをいただけるとありがたいです。
Function 文書全体を置換(mae, ato)
中略
.Shape.TextFrame.TextRange.Text = mae
中略
.Shape.TextFrame.TextRange.Text = ato
後略
Qchan様、何度も申し訳ありません。
なぜか上手くいかず…
https://stabucky.com/wp/archives/13067
こちらを元にし、Function 文書全体を置換(mae, ato)以降を、昨日の通り変更しました。
以下は変更せず動くものでしょうか?
'Word文書に対する処理
myfile = Dir(mypath & "*.doc*")
Do While myfile <> ""
Documents.Open FileName:=mypath & myfile
For i = 0 To x - 1
Call 文書全体を置換(mae(i), ato(i))
Next i
ActiveWindow.Close SaveChanges:=wdSaveChanges
myfile = Dir
Loop