
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Java Java 南京錠 2 2023/02/04 11:46
- PDF acrobatでwordファイルをpdfに変換すると文字化けする 3 2023/02/10 09:31
- PDF I LOVE PDF利用 pdfからWordに変換について 回答お願いいたします。 無料のI LOV 1 2022/05/13 13:24
- SQL Server SQLについて質問です。 a表がありその表には従業員名を保存するname列があります。 LIKE演算 1 2022/05/17 17:49
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
- Excel(エクセル) エクセルの数式について教えてください。 7 2023/06/18 10:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(実行時エラー5852)Excelデータ...
-
マクロの警告!!!!
-
Access2010マクロ メッセージ...
-
MS-Projectの使い方(マクロを...
-
ワードを開くといつもセキュリ...
-
ThisWorkbook Moduleとは??
-
access イベントのキャンセル
-
Wordでマクロを設定したら...
-
word2003で、デザインモードツ...
-
メールでEXCELを受け取っ...
-
ワード2003の起動時にエラ...
-
マクロについて。
-
ワード2007、ヘッダーのマクロ...
-
ワード添付ファイルの送信について
-
Word文書に必須入力項目を設けたい
-
Excelのマクロ警告を消すには
-
ACCESS フォームの検索、表示...
-
ワードのマクロで、蛍光ペンの...
-
Word(2010)のマクロが突然失...
-
ワードを立ち上げると画面が小...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(実行時エラー5852)Excelデータ...
-
Word文書に必須入力項目を設けたい
-
Access2010マクロ メッセージ...
-
Excelのマクロは管理者でないと...
-
Excelのシートを印刷不可(禁止...
-
KingsoftのOffice2013でExcelの...
-
Excel2003 GET.CELL関数を使う...
-
VBAを禁止している会社って...
-
PERSONAL..XLSを削...
-
マクロのアイコンを消したい
-
ワードを起動した時にでる「セ...
-
今まで実行できていたマクロが...
-
ワードを開くたびに「このプロ...
-
Excelで追加した右クリックメニ...
-
ワードのマクロで、蛍光ペンの...
-
wordで改ページごとにそれぞれ...
-
Word2013: コピー、切り取り、...
-
秀丸について教えてください
-
「セキュリティレベルが高」の...
-
EXCELのマクロについて
おすすめ情報
前提条件について補足します。
・NG単語数:10個未満
・特定のテンプレート(雛形)を対象
・作業中の文書を上書き保存する場合、動くマクロ
■設定したいこと
①ワード作業を上書き保存する際、NG文字有無を自動で検索する
②NG文字が無い場合、作業を保存してワード終了
③NG文字がある場合はどうするか選択する。
③-1:YESの場合:NG文字を全て変換して上書き保存してワード終了
③-2:NOの場合:ワード作業を保存してワード終了
MsgBoxは以下になると思います・・・
If MsgBox("NG文字があります。変換しますか", vbYesNo + vbExclamation) = vbYes Then
MsgBox "NG文字を置き換えします"
‘③-1
Else
MsgBox "終了"
‘③-2