• 締切済み

macroコードを短縮できるでしょうか。

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >依田 茂さんと言う方(特許事務所勤務) Vector にマクロを登録している方ですね。たぶん、その方ご自身の中でされていることであって、ユーザーリクエスとはしないのかもしれません。出版業界で、ツールを出している人もいるのですが、それぞれ分野が違うと、そのルールも異なるようです。少し、調べてみましたが、一般の人にとって、秀丸エディタのマクロがあまり簡単とは言えません。 ただ、基本的に、テキストファイルを処理するものでしたら、MS-Wordのマクロに関わらず、もっと簡単に作れるはずだとは思います。 「正規表現の対照表」では、単なるメタ・キャラクタだけですから、あまり有用性が高いわけではありません。それが最低の基礎知識というところだと思います。 >もっといいものをと考えています。 それは同感です。いろいろ検討してみると、私の知っている範疇ですと、Perl に収まりそうな気がします。ただ、Perl は、本来、Unix系のツールで、コマンドラインです。 一旦、組み込めば、後は、スクリプトのリストを書き換えるだけですみます。 入門書: はじめてのPerl入門 日本理工出版会 戸内 順一 (著) http://www.amazon.co.jp/exec/obidos/ASIN/4890194940 他の本に比べて簡単で、教科書のような感じです。 ツールは、このようなものがあります。 他のものに比べて、安定しています。 http://homepage3.nifty.com/aokura/#Perlを始めよう! Perl が習得できなかったとしても、VBAに応用できるようになります。 VBAのPerl系のツールとしては、BASP21の中の、BRegExp というものがあります。 BASP21 http://www.hi-ho.ne.jp/babaq/basp21.html BREGEXP.DLL http://www.hi-ho.ne.jp/babaq/bregexp.html

azuma3chom
質問者

お礼

 Wendy02さん、いろいろ調べていただきましてありがとうございます。明細書作りに役立つプログラムを作って見たいと思うようになって、11ヶ月が立ちますが、周りを見ますと、VBAを知っている弁理士や特許技術者は殆どいません。どんなソフトを作れば、便利であるかについて、意識すらしていないようです。今日も、家で仕事をしていて、新しく思いついたものがあります。この質問の、「Private Sub 符号削除()」とは、逆の処理をするソフトです。符号を入れた権利範囲を作りますと、構成要素の取り違いが無く、間違いが生じにくいので、私も、符号を入れた権利範囲を作ります。ですが、権利範囲から符号を外さないと、大手企業の知財部へは納品できません。したがって、 Pivate Sub 符号削除()」のソフトがあったら便利だな、とある日思い立って作りました。  ところが、他人が作成した明細書に記載された発明についての改良発明を新たに出願したいということで、明細書作成を頼まれることがあります。このとき、効率的な理解ができるようにするために、権利範囲の用語に図面に使われている符合を付けます。このために便利なソフトは、「Private Sub 符号削除()」のソフトが行う処理とは逆の処理を行うソフトです。このソフトは、拒絶理由通知が来たときにも十分に役立ちます。拒絶理由通知に示される引例(先行特許文献)は、4件くらいあります。その、権利範囲を読解するには、やはり、請求範囲の用語と符号との照合による理解が不可欠です。  このようなことから、新しいテーマが見つかったので、これから毎日、マクロつくりに時間をかけ、躓いた時には、質問を投稿しようと思います。そのときには、宜しくお願いします。

関連するQ&A

  • 特定の色のマーキングだけを解除するマクロ

    Wordのマクロについての質問です 複数の色でマーキングしている文書があり、 特定の色のマーキングだけを解除するマクロを 作成していますが、マーキングの色の指定の仕方がわかりません。 マーキングの色の指定はどのよう(どこ)にすれば、よいのですか。 Sub マーキングなし() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Highlight = False With Selection.Find .ClearFormatting .Highlight = True .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True End With Selection.Find.Execute Replace:=wdReplaceAll end sub

  • ワードで選択範囲だけの改行を削除するマクロ

    こんにちは いつもお世話になっています ワード2010で、選択範囲だけの部分の改行を削除するマクロを記録マクロで作ったのですが、選択部以外もすべて改行してしまいます。どこがいけないのでしょうか。あるいは、操作の仕方でしょうか。以前は使えていたと思うのですが、仕様が変わったのでしょうか。 任意の範囲を選択しておいて、記録を開始しました。 よろしくお願いします。 Sub Macro1() ' ' Macro1 Macro ' ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub ネット上で見つけた以下のマクロでもすべての改行が削除されます。 http://okwave.jp/qa/q960285.html Sub Macro14() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p" .Replacement.Text = " " End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • Wordマクロ

    Wordでワイルドカードを使った置換マクロを作ったのですが、 「MatchWildcardsとMatchSoundsLike、MatchAllWordForms、MatchFuzzyは、同時にTrueに設定することはできません。」 というエラーが出てしまいます。 MatchSoundsLike、MatchAllWordForms、MatchFuzzyは、 ソースに書いてないしTrueにもしていません。 どこが悪いのでしょうか? 以下がソースファイルです、よろしくお願いいたします。 Sub substitute() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "[!a-f]{1,}" .Replacement.Text = "@" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • Word2010特定の名前を置き換えるマクロ

    例えば、Wordの文章で「田中」とあるものを「山田」に変えたい場合は、置き換えの機能を使ってマクロの記録ができると思います。 しかし、こうするとテキストボックスやヘッダフッタに記載された文字は変更できないように思います。 どうすれば、これらの文字も含めて置換の対象とすることができるか教えてください。 Sub Macro() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "山田" .Replacement.Text = "田中" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • word2007 マクロ

    下記マクロは蛍光ペン部分を消して、その文字数分にアンダーラインを引くマクロになります これを改造して、赤文字を消して、その文字数分を空欄にしたいのです。 ですが、wdColorRedの入れ方が分かりません。ご教授お願いします。 Sub Problem() '蛍光ペン部分を消して、アンダーラインを引く Selection.Find.ClearFormatting Selection.Find.Highlight = True Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Highlight = False With Selection.Find.Replacement.Font .Underline = wdUnderlineSingle .StrikeThrough = False .DoubleStrikeThrough = False .Outline = False .Shadow = False .Hidden = False .AllCaps = False .Superscript = False .Subscript = False End With With Selection.Find .Text = "*" .Replacement.Text = " ^z" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • MicrosoftWordのページ指定置換マクロ

    お世話になります。 MicrosoftWordの文章の中の『SYSTEMS』と単語を XXXXXXXに置換するマクロを作ってみましたが これですとWordの文章ファイルの 全てページの『SYSTEMS』とゆう単語を置換してしまいます。 Wordの文章ファイルの1ページ目だけの全ての『SYSTEMS』 とゆう単語を置換するマクロはどのようにすればよいでしょうか? Sub Macro2() ' ' Macro2 Macro ' ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "SYSTEMS" .Replacement.Text = "XXXXXXX" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • 以下のようなマクロを作成しましたが、文章の最後まで連続置換をしたい場合

    以下のようなマクロを作成しましたが、文章の最後まで連続置換をしたい場合はどうすればよいのでしょうか。 ご教示をお願い致します。 ************************ Selection.Find.ClearFormatting With Selection.Find .Text = "<G>*<M>" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Selection.Font.Name = "MS ゴシック" Selection.Find.ClearFormatting With Selection.Find .Text = "<G>*<M>" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With End Sub ************************

  • ワードでマクロがうまくいきません。

    よろしくお願いします。 マクロの知識はほとんどないのですが、 「マクロの記録」の機能を使い、ワードで 「スペースを探し出し、そのスペースにアンダーラインを引く。」 ために、 -------------------- 編集ー置換ー 検索する文字列にスペースをタイプ、 置換後の文字列にスペースをタイプ、 オプションの書式で、フォント、下線、一重下線 すべて置換 -------------------- マクロの記録を選択した後、上のように作業しました。 そしてマクロの記録をとめました。 マクロの記録中の操作では、思い通りに置換されるのですが、 次にそのマクロを作動させると、なにもおこりません。 なにか変な操作をしたのか、と五度くらい試したのですが、 やはり動きません。 中身は、↓のようでした。 -------------------- Sub Macro2() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = " " .Replacement.Text = " " .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub -------------------- どうしてうまく動かないのでしょうか。 教えていただけるとありがたいです。よろしくお願いします。

  • wordで選択した部分の前後に文字列を挿入するマクロを作成したいと思っ

    wordで選択した部分の前後に文字列を挿入するマクロを作成したいと思っています。 Word文章中から二重下線を検索しマーカーを付けています。 その検索したマーカーが付いている前に例えば"あいう"後に"ABC"と入れる場合どうすれば良いのでしょうか? Selection.InsertBefore Selection.InsertAfter 等を使って入れられる事はわかりましたがうまく入れる事が出来ません。 どなたかご教授頂けると幸いです。 他のやり方もあれば是非宜しくお願い致します。 Sub UnderlineDouble() ' ' 検索条件で二重下線、置換条件で蛍光ペン ' With Selection.Find .ClearFormatting .Replacement.ClearFormatting '検索で二重下線 .Font.Underline = wdUnderlineDouble .Text = "" '置換で蛍光ペン .Replacement.Highlight = True .Replacement.Text = "^&" 'その他の条件 .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .CorrectHangulEndings = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll MsgBox "完了" End Sub

  • myText = Selection.Range.Textについて

    任意の文字列を選択することを含むワードのマクロでは、検索置換ウインドウを使うと、以後、正常な置換が行われないようなのですが、どうしたら、正しい置換が行われるように確保できますでしょうか。どなたか、お教え願います。例えば、以下のコードです。 Dim myText As String myText = Selection.Range.Text With Selection.Find With .Replacement.Font .Name = "明朝" .Color = 255 .Bold = True End With .ClearFormatting .Text = myText .Format = True .Forward = True .Wrap = wdFindAsk '.Wrap = wdFindContinue .MatchFuzzy = False Selection.Find.Execute Replace:=wdReplaceAll End With ある文字列を選んで実行すると、赤字で太字になります。別の文字列をを選んで実行すると、同様に赤字で太字になります。ところが、検索置換ウインドウを使ってしまうと、その後は、検索置換ウインドウの入力状態に支配されてしまいます。 このようなことは、他のマクロでも確認しています。例えば次のマクロもそうです。 Dim myText As String myText = Selection.Range.Text Options.DefaultHighlightColorIndex = wdBrightGreen With Selection.Find With .Replacement .ClearFormatting .Highlight = True End With End With With Selection.Find With .Replacement .ClearFormatting .Highlight = True End With .ClearFormatting .Text = myText .Format = True .Forward = True .Wrap = wdFindAsk '.Wrap = wdFindContinue '.MatchFuzzy = True Selection.Find.Execute Replace:=wdReplaceAll End With myText = Selection.Range.Textはだめなようです。 通常の検索置換は、検索置換ウインドウが作動するようです。検索置換ウインドウが作動しない検索置換のコードがあれば教えてください。 For~Nextによる一文字ずつの繰り返し処理では時間がかかるので、一ワードずつFor Eachの繰り返し処理で検索置換ウインドウが作動しない検索置換のコードがあれば教えていただけると幸甚です。