• ベストアンサー

Word2013 特定文字内の文字を消すマクロは

Word2013です。 テキストボックス内で宛名シールを作って印刷しています。 株式会社 ○○○○○ ▲▲御中 株式会社と御中内の○○○○○▲▲を消す方法は、マクロで出来ますか? ○○○○○▲▲の文字はその都度変わりますが、株式会社と御中は固定です。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1です。補足で指摘がありましたことについて。 ーー 質問に出会う数日前に、WordVBAで語句Xと語句Yの間の文字列を捉える方法で、苦労してましたので、 一般文書にある文章(文字列)を対象にしてと、頭がそちらへ行ってしまいました。 ーー 質問には、「テキストボックス内で」とありますね。 テキストボックスが出るまでとか、テキストボックスとシール印刷の間の説明をとばしてしまっているね。 しかし「テキストボックスで宛名シールを作る」というのが、方法として、小生には、普通だと思えません。テキストBー>印刷ではなく、テキストBーー>文書?ーー>いんさつとかのプロセスではないの? なにかどういう場面でテキストボックスコントロールらしいものが出てきますか? 例えば (1)宛名ラベルシールを作るソフト(市販やフリーなど)の途中で、テクストボックスが出てきて、それに関する質問なら、作者に聞かないと、どうしようもない、と思う。選択メニューに(一部消すが)なければ他人には手出しができない。操作途中ならDELETEで消えるはず。 (2)自作やベテランで、ワードの表のマス目1つがシーる1枚のようなソフトを作っているなら、 まだ議論は出きるかも。 (3)ユーザーフォームにテキストボックスをつくっているなら議論は出きるかも (4)ワードにはコンテンツコントロールと言うテキストボックスもある。 (5)文書に直接テキストボックスも作れるかも (6)シールの作成などでは、ワードの差し込み印刷お機能がよくつかわれる。 質問者の、説明が、中途半端で(1)ー(6)のどれなのか、それ以外か、よくわからない。 (3)ー(6)など質について、問者は、あに方法か、とわかるのかな? ラべルシール印刷は、位置合わせという問題があるので、相当プロ級ベテランでないと手を出さないはず。 === 私も勉強途中だし、即、答えられるのではないし、何にしてもOKWAVEの今日の様子(回答者のレベルの想像)では、回答は出にくいと思うが、待ってみますか?土日曜日挟みではあるが、2-3日が勝負で、それを過ぎると、回答はまず出ないかも。

nanakora
質問者

お礼

何度も回答ありがとうございました。 テキストボックスにこだわっていましたが、仰る通り、文書内にそのまま書く方が自然ですね。 文書内に直接書けば、頂いたマクロを活用できましたので、文書を変更しました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

word VBAを使いこなせる人は少ないようです。市販解説本も2-3冊で、また(テーマを指定して、ぴったりの)WEB記事も見つけにくい。(特にOKWAVEのこのカテの質問読者に限れば)出来る人は少ないと予想するので。) エクセルVBAができるからと言って、類推しては、えらい目にあう(すぐ行き詰まる)だろう。 WordVBAの文書の構成の理解の仕組についての理解も解説を探すのも一苦労。 小数箇所なら、とりあえず、手作業でやることを勧めます。常識的には、仕事人には、時間の無駄です。 ーーー 私はword VBA初心者ですが、下記を書いてみました。泥臭い初歩的ロジックです(なぜそうなるのか、本回答最後の辺の記事を参照)が。 データの有り様によっては、うまく行かない場合はあるでしょう。でも参考に。 ーー 文書の標準モジュールに(エクセルではないよ) Sub 開始位置と終了位置を取得() Selection.Find.ClearFormatting 'GoTo p2 Dim Target As String Dim Myrange As Range Dim GetStart1 As Long Dim GetEnd1 As Long '----株式会社 Set Myrange = ActiveDocument.Range(0, 0) Target = "株式会社" With Myrange.Find .Text = Target '検索実行 Do While .Execute '検索文字の開始位置と終了位置を取得 If .Found = True Then GetStart1 = Myrange.Start GetEnd1 = Myrange.End End If MsgBox "開始位置:" & GetStart1 & vbCrLf & "終了位置:" & GetEnd1 Loop End With p2: MsgBox "AAAA" '----御中 Dim GetStart2 As Long Dim GetEnd2 As Long Set Myrange2 = ActiveDocument.Range(0, 0) Myrange2.Find.ClearFormatting Target = "御中" With Myrange2.Find .Text = Target '検索実行 Do While .Execute '検索文字の開始位置と終了位置を取得 If .Found = True Then GetStart2 = Myrange2.Start GetEnd2 = Myrange2.End MsgBox "開始位置:" & GetStart2 & vbCrLf & "終了位置:" & GetEnd2 End If Loop '======= ActiveDocument.Range(GetStart1 + 4, GetEnd2 - 2).Select Selection.TypeText Space(15) End With End Sub ーー 納得の段階が過ぎたらMsgboxの全行は削除してください。 テストデータはワード文書に ーー お願い 株式会社 西武振興産業 総務部 御中 いつもお世話になっており有難く存じておりま す さて, 先日お送りしました・・ ーー のようなものを作ってテストしました。 === 先日ふと、似た別件ですが、正規表現で、「( と )に囲まれた文字列を抽出する」というパターンをWEBで調べましたが、見つかりましたが、非常に理解がむつかしい。 https://docs.microsoft.com/ja-jp/visualstudio/ide/using-regular-expressions-in-visual-studio?view=vs-2019 == 構造的に、こういうパターンの課題に適したツールを、VBAは、備えてないと思いました。

nanakora
質問者

補足

ありがとうございました。 msgのおかげで、どの位置を実行しているのか一目でわかりました。 マクロでは、テキストボックス内に文字が入っていると、有効な範囲を超えており、 ActiveDocument.Range(GetStart1 + 4, GetEnd2 - 2).Select で止まりました。 文書内に文字が入っているのと、テキストボックス内では扱いが違うのでしょうか? 解読して編集してみます。 ありがとうございました。

関連するQ&A

  • Word 2003 テキストボックス固定

    すでに罫線や文字が入っている ラベルシールに文字を印刷するのに、 無理やり、テキストボックスを配置して 印刷しました。 文字の内容は毎回変えたいのですが、 テキストボックスの位置は変えたくありません。 固定する方法はないでしょうか?

  • Word2000でマクロを有効にする方法

    宛名シールを作っているのですが そのシールの発売元のテンプレートを使い 作成し、印刷しようとすると 「このプロジェクトのマクロは無効に設定されています オンラインヘルプまたはホストアプリケーションの ドキュメントを参照してください」 とメッセージが出て、いろいろなところを見ても全くわかりません。 この前に別の宛名シールを作ったときには出ませんでした。(別の会社のシールです) どこの設定を変えれば印刷できるのでしょうか? WinXPのHome Editionです。 初心者なので、簡単な言葉で説明していただけると 助かります。 よろしくお願いします。

  • ワードのテキストボックス内の文字が印刷されません。

    ワードのテキストボックスをコピーして貼り付けようとしたら、画面やプレビュー画面にはちゃんと文字が見えているのに、印刷のプレビュー画面には文字が見えず、印刷でも出てきません。 新規作成で作ったテキストボックスから貼り付けても同じで、印刷できません。 テキストボックス外のところでは、文字入力し、コピーして貼り付けたら印刷できます。また、画像やワードアートの文字も印刷できます。 テキストボックスの文字だけ印刷できないのです。 急いで作成しないとならない書類があり、大変困っております。 どなたかお助けを…お願いたします!!!

  • ワードのマクロを教えてください

    こんにちは いつもお世話になっています。 ワード(2003)のマクロを教えてください。 ある辞書の文章をコピーした状態から、ワードへ貼り付け、貼り付けた部分だけを書式変更するマクロです。 具体的には、コピーしたテキストを書式付の状態で貼り付けた後、その貼り付けた部分だけを選択して書式を変えたいです。変更する書式は「行間」-「固定値」、「間隔」-「12pt」です。 辞書のコピペで使用したいのです。テキスト形式での貼り付けだと文字化けが生じ、HTMLだと行間が大きすぎるのです。 よろしくお願いします。

  • ワードの文字とテキストボックスの位置

    いつもお世話になります。 今回はワードで名刺を作ろうとして、宛名ラベル作成を使って枠を作り、文字を入力した後、図(ロゴ)や文字を テキストボックスで作り、配置しようとしているのですが、 どうしても先に入力した文字が逃げるんです。 以前作ったときは、そんな事なかったのに どうしてでしょうか? 文字と図やテキストボックスを自由に配置できるように する方法を教えてください。 よろしくお願いします。

  • Word テキストボックスの文字が印刷できません。

    Wordで、テキストボックスに文字を入れた部分のみが印刷できません。以前は印刷できていたのですが、テキストボックスの文字が印刷できず、また印刷プレビューで見てもその部分は真っ白く抜けています。なぜこのようになったかも不明です。宜しくお願いします。 また、関係があるのかわかりませんがオートシェイブで作った丸も印刷できなくなりました。

  • ワード差し込み印刷 宛名を1行にしたい

    ワードにエクセルの住所録を取り込んで年賀状のあて名印刷をしています。宛名印刷ウィザードを使用しました。 中央に会社名+御中としているのですが、長い会社名の場合2行になってしまいます。 1行に入れる方法がありますか?

  • ワード2000でマクロを組む

    マクロ初心者で、ワード2000を使っています。テキストボックス フォームフィールドを使って作成したフォームで、2つのフィールド(ブックマーク名を ”text1” と “text2” と設定)のうちのどちらかに入力がない場合は、メッセージを表示し、ファイルを保存・閉じることができないようにするマクロを組みたいのですが、どうしたらよいのでしょうか。どなたか教えていただけないでしょうか。

  • ワード マクロ有効設定の方法を教えてください

    ネームシールを作成しようとシールのHPよりDLできるテンプレートで作成しました。(ワードです)で、いざ印刷しようとすると「このプロジェクトはマクロが無効に設定されています」とのメッセージがでます。ヘルプを見たりしましたが有効にする方法がわかりません。あと、有効にするだけで解決することでしょうか? 宜しくお願いします。OSは98SE、ワードは2000です。

  • エクセルで宛名印刷ができるマクロ

    エクセルで宛名印刷ができるマクロを教えてください。 できれば封筒、A4用紙、シール、それぞれ。 やっぱりワードを使うのでしょうか。レイアウトの調整がやりづらい 気がします。

専門家に質問してみよう