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も見ています
-
歩いた自慢大会
「めちゃくちゃ歩いたエピソード」を教えてください。 長時間でも長距離でも結構です。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
WORDマクロで特定文字から別文字までを範囲選択したい
Word(ワード)
-
word VBA 文字列から文字列への選択の仕方について
Visual Basic(VBA)
-
WORDで複数語句を検索するには
Word(ワード)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワードでフリガナの付け方
-
http://oshiete.goo.ne.jp/qa/1...
-
テキストボックスの文字列を上...
-
ワードが白と黒が反転してしま...
-
ワードってスマホから見ると、...
-
42×34でレイアウト設定して文字...
-
MicrosoftのOfficeに代わるソフ...
-
最近MacBookに変えました。 マ...
-
office365 のアプリについて
-
フォントについて フォントは購...
-
ワード PDF化した際、背景の...
-
ワードで途中のページからペー...
-
txtって、ページの概念なくなり...
-
txtはフォント,サイズ関係ない...
-
txtはおそらく,フォントやサイ...
-
パワーワードとは?
-
ワードの文字の大きさについて
-
ワードの保存について
-
どのフォントを使用しているの?
-
ワードやエクセルのリボンについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(実行時エラー5852)Excelデータ...
-
Access2010マクロ メッセージ...
-
Excelのシートを印刷不可(禁止...
-
Excelのマクロのショートカット...
-
Word文書に必須入力項目を設けたい
-
Wordのマクロを有効にする方法
-
Excelのマクロは管理者でないと...
-
VBAを禁止している会社って...
-
WORDのマクロでNG文字がある場...
-
画像判定の出来るマクロツール
-
今まで実行できていたマクロが...
-
Word2013: コピー、切り取り、...
-
Word2007でファイルを開いたと...
-
PERSONAL..XLSを削...
-
署名付きマクロについて・・・
-
EXCELのマクロを有効にする
-
MS-Projectの使い方(マクロを...
-
自分のマクロを「安全」なマク...
-
Word2000で原稿用紙を使いたい...
-
outlookでのBCC自動設定
おすすめ情報
前提条件について補足します。
・NG単語数:10個未満
・特定のテンプレート(雛形)を対象
・作業中の文書を上書き保存する場合、動くマクロ
■設定したいこと
①ワード作業を上書き保存する際、NG文字有無を自動で検索する
②NG文字が無い場合、作業を保存してワード終了
③NG文字がある場合はどうするか選択する。
③-1:YESの場合:NG文字を全て変換して上書き保存してワード終了
③-2:NOの場合:ワード作業を保存してワード終了
MsgBoxは以下になると思います・・・
If MsgBox("NG文字があります。変換しますか", vbYesNo + vbExclamation) = vbYes Then
MsgBox "NG文字を置き換えします"
‘③-1
Else
MsgBox "終了"
‘③-2