
WORDのマクロでNG文字がある場合のみ、文字を変換させることは可能でしょうか。
WORDのマクロはまったく分らないため、意味も併せて教えて頂ければ嬉しいです。
NG文字:チバ、とうきょう、sakura・・・
変換文字:千葉、東京、桜・・・
①ワード作業を保存する際、NG文字有無を自動で検索する
②NG文字が無い場合、作業を保存して終了
③NG文字がある場合、MsgBox "NG文字があります。変換しますか"
条件分岐
YESの場合:NG文字を全て変換する
NOの場合:作業を保存して終了
※因みに③のYESの場合は、複数語の配列を作って、置換操作の繰り返しすることでできるようです・・・
参考:http://oshiete1.goo.ne.jp/kotaeru.php3?q=994495
No.3ベストアンサー
- 回答日時:
> マクロを実行すると、「With rng.Find」の行で以下エラーが
今確かめてみたら、このままだとエラーになりますね。
「With rng.Find」の行を、「With Selection.Range.Find」に修正
してから実行してみてください。
「rng」の変数を使うつもりで試しているうちに、修正後に有効な
変数の使い方になっていなかったためのようです。
上記のように修正するとともに、「Dim rng As Range」の行は不要
なので、削除しておいてください。
まだまだ勉強不足で、変数の使い方もおぼつかない状態です。
それと、
> ③-2:NOの場合:ワード作業を保存してワード終了
の部分は、どう扱うか迷ったので記載していませんが、ファイルを
閉じるなら「ActiveDocument.Save」の下行に「Document.Close」
をそれぞれ追加すれば可能です。
Word本体を閉じるなら、「Application.Quit」で保存と終了を指定
すれば、可能だと思います。
https://msdn.microsoft.com/ja-jp/vba/word-vba/ar …
https://msdn.microsoft.com/ja-jp/library/microso …
No.2
- 回答日時:
No.1の回答者です。
体調を崩して、追加回答が遅くなりました。
上書き保存のときに実行したいのですね。
それなら、マクロの保存先を作業中のファイルまたは雛形として、
以下のマクロを登録します。
(マクロ名をFileSaveにすることで、既定のコマンドを横取り)
Sub FileSave()
'
' FileSave Macro
' 作業中の文書またはテンプレートを保存する前に置換の指定
'
Dim s1, s2 As Variant
Dim i As Long
Dim rng As Range
Dim cnt As Long
cnt = 0
' NG文字を指定
s1 = Array("NG1", "NG2")
' 置換後の文字を指定
s2 = Array("GOOD1", "GOOD2")
For i = 0 To UBound(s1)
With Selection.Find
.Text = s1(i)
.Forward = True
.Wrap = wdFindStop
.MatchCase = False
.MatchWholeWord = True
.Replacement.Text = s2(i)
End With
ThisDocument.Range(0, 0).Select
Do Until Selection.Find.Execute = False
cnt = cnt + 1
Loop
Next i
If cnt > 0 Then
If MsgBox("NG文字があります。変換しますか", vbYesNo + vbExclamation) = vbYes Then
MsgBox "NG文字を置き換えします"
ThisDocument.Range(0, 0).Select
For i = 0 To UBound(s1)
With rng.Find
.Text = s1(i)
.Replacement.Text = s2(i)
.Execute Replace:=wdReplaceAll
End With
Next i
Else
ActiveDocument.Save
End If
Else
ActiveDocument.Save
End If
End Sub
マクロが苦手なので、もっと良い書き方があると思ったのですが、
私なりの経験だけで作成してみました。
とりあえずは動作すると思います。
マクロを作成していただきありがとうございます。
頂いたマクロを実行すると、「With rng.Find」の行で以下エラーが発生します。
'実行時エラー'91'
オブジェクト変数または With ブロック変数が設定されていません。
変数は設定していただいていると思われますが、回避する方法を教えていただけないでしょうか。
No.1
- 回答日時:
私はマクロが苦手なほうです。
ですから、希望していることができるものを提示することは無理
なので、アドバイス程度の回答になります。
・前提条件に付いて
NG文字の有無を出すマクロは、すべての文書が対象ですか?
(新規文書や差し込み文書、他からの文書を保存しなおす場合も
含む)
文書を閉じるときなのか、名前を付けて保存の場合と上書き保存
の場合で、どちらかの場合に出すものなのかで対応が変わります。
NG文字はかなりの単語数になるのですか?
質問にある過去ログの配列の場合だと、それほど多くないの場合
なので。
特定の文書のみの場合と、特定のテンプレート(雛形)の場合と
では設定対象が違います。どちらになるのかを限定されたほうが
良いと思うので、文書とテンプレートのどちらになりますか?
(すべての文書を対象にしないと思われるので、Normal.dotmに
登録するのはお勧めしない)
Excelなどのマクロなら、自作できるのですか?
基本部分は変わらないので、MsgBoxの扱いなどは基本的に同じ。
その他の条件もあるなら、できるだけ出されたほうが回答が付き
やすいと思います。
回答いただき、ありがとうございます。
前提条件について補足します。
・NG単語数:10個未満
・特定のテンプレート(雛形)を対象
・作業中の文書を上書き保存する場合の動きです。
・簡単なExcelマクロなら、自作できるのでMsgBoxの設定はできます。
■設定したいこと
①ワード作業を上書き保存する際、NG文字有無を自動で検索する
②NG文字が無い場合、作業を保存してワード終了
③NG文字がある場合はどうするか選択する。
③-1:YESの場合:NG文字を全て変換して上書き保存してワード終了
③-2:NOの場合:ワード作業を保存してワード終了
MsgBoxは以下になると思います・・・
If MsgBox("NG文字があります。変換しますか", vbYesNo + vbExclamation) = vbYes Then
MsgBox "NG文字を置き換えします"
‘③-1
Else
MsgBox "終了"
‘③-2
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELファイルを開くとき「マク...
-
お願いいたします。
-
Excelのシートを印刷不可(禁止...
-
ワードを起動した時にでる「セ...
-
(実行時エラー5852)Excelデータ...
-
Word2013: コピー、切り取り、...
-
Excelのマクロのショートカット...
-
VBAを禁止している会社って...
-
Access2010マクロ メッセージ...
-
ワードを立ち上げると画面が小...
-
windows版wordがweb版になって...
-
高齢者向けおすすめノートPCは?
-
「QuickTimeに関連付けますか」...
-
officeソフトが消えてしまいました
-
エクセル、ワードって何!?
-
エクセルに貼り付け
-
office365のteams会議について
-
wordの差し込み印刷で困ってい...
-
古いパソコンを使っていてWindo...
-
Word2007が起動後、操作を受け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(実行時エラー5852)Excelデータ...
-
Word文書に必須入力項目を設けたい
-
Access2010マクロ メッセージ...
-
Excelのシートを印刷不可(禁止...
-
Office2007 マクロの警告を表示...
-
Excelのマクロは管理者でないと...
-
Office2007のマクロ実行について
-
エクセルのマクロセキュリティ...
-
ワードを開くといつもセキュリ...
-
Access レポートプレビューのメ...
-
CtrlCができません。
-
ワード2003を使用。マクロ...
-
Excel2003 GET.CELL関数を使う...
-
VBA 自作のマクロの場合は...
-
VBAを禁止している会社って...
-
WORD2003 網掛け濃さの...
-
エクセルーマクロ削除後 メッ...
-
MS-Projectの使い方(マクロを...
-
WORDのマクロでNG文字がある場...
-
UWSCのマクロについて
おすすめ情報
前提条件について補足します。
・NG単語数:10個未満
・特定のテンプレート(雛形)を対象
・作業中の文書を上書き保存する場合、動くマクロ
■設定したいこと
①ワード作業を上書き保存する際、NG文字有無を自動で検索する
②NG文字が無い場合、作業を保存してワード終了
③NG文字がある場合はどうするか選択する。
③-1:YESの場合:NG文字を全て変換して上書き保存してワード終了
③-2:NOの場合:ワード作業を保存してワード終了
MsgBoxは以下になると思います・・・
If MsgBox("NG文字があります。変換しますか", vbYesNo + vbExclamation) = vbYes Then
MsgBox "NG文字を置き換えします"
‘③-1
Else
MsgBox "終了"
‘③-2