• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Word2007 文字変換マクロについて)

Word2007 文字変換マクロのエラーを解消する方法

Wendy02の回答

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

それは良かったです。 今回は、VBAをたしなむ人がみれば大したことがないと思うかもしれませんが、Wordマクロではなくて、Wscript(WSH)という分野ですから、VBAマクロよりも1ランク上です。今回の開発では、VB6の開発と同じように、Winword.exe の常駐を絶対に残さないということが大事です。 それとExcelのSDI(Single Document Interface)の設定をしても、WordのSDIとはまったく挙動が違うのです。VBAだけの人は、これに気が付きません。これが、VB.Net になると、もっと難しくなります。 Word VBAは、基本的なことは、『Office 97 プログラマーズガイド』の中のWord編を読みましたが、どちらかというと、Webサイトのサンプルコードを一つずつ調べて覚えたものが多いです。WScript用のエディタがあると良いのですが、今、私は、"VBSedit" というツールの旧版しか持っていません。新しいものがあると良いなって思っています。 WScript は、昔と違って、WMIやHTAがありますので、半端でなく難しいです。その割りに、教本テキストが少ないし専門的なものが多いです。おまけに、Vista では、その言語のサポートがおかしくなっています。Microsoft 側では、PowerShell という別の開発言語に仕向けたいようです。 それと、少し言い訳させていただくと、質問の最初から全体的な組み立てが分かれば、自分が出来るか出来ないかの判定が出来ます。内容によっては、追加条件によってまったく違う内容にもなることがあります。全体のコードの中のたった一行でもクリアできなければ、全体が動きません。いくら努力賞で点を貰っても、それでは何にもならないのです。それだけに、掲示板で書くのは、自己満足だけではいけないので、難しいものだなって思います。それが現在の私の唯一のトレーニング方法です。

narin_san
質問者

お礼

 Wendy02さん、ていねいに最後までフォローしていただき感謝します。  そうなんですか。Wordマクロに毛がはえたつもりで始めてしまいました。奥が深いのですね。Excelの式だけは自信があったのですがすが、Wscriptはマクロよりかなり難しいことが分かりました。山は高いほど登りたくなんていえるほど力を付けたいものです。  Wscript(WSH)という言葉を初めて知りました。今後は、Wscriptで検索し知識を深めていきたいと思います。  最後のフォローを読んで、Wendy02さんの苦労の再認識と回答の素晴らしさに納得しました。  このあと質問を締め切りますのボタンを始めてクリックしてみます。  ありがとうございましたm(__)m

関連するQ&A

  • フォルダ内の複数のファイルで置換したい

    お世話になります。 現在、フォルダ内にWord及びExcelファイルがたくさんありまして、 その中の”2009-11-30”という語を”2009-12-22”に 一括で置換したいと思っています。 置換したい語は、Wordではヘッダに、Excelではフッタにあります。 ネットで検索したらスクリプトという物があることを知り、また、 以下のようなword用のスクリプトを見つけたので、 置換する用語の部分だけ変更したのですが、 ヘッダに書いてある文字は置換してくれませんでした。 (ヘッダ以外の文字で試したらOKでした) これは、アイコンをダブルクリックして 対象のファイルが入っているフォルダを指定するものらしいです。 ------------------------------- '#1 フォルダ全部のファイルでやる場合 '#2 指定したファイルだけやる場合 Const wdReplaceAll = 2 strDir = InputBox("ディレクトリ名を入力してください。") '#1 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") '#1 Set objFolder = objFSO.GetFolder(strDir) '#1 Set objWord = CreateObject("Word.Application") objWord.Visible = True For Each objFile In objFolder.Files '#1 If Lcase(Right(objFile.Name, 4)) = ".doc" Then '#1 strArg = objFile.Path '#1 '#2 For Each strArg In WScript.Arguments Set objDoc = objWord.Documents.Open(strArg) Set objSelection = objWord.Selection objSelection.Find.ClearFormatting objSelection.Find.Replacement.ClearFormatting With objSelection.Find .Text = "2009-11-30" .Replacement.Text = "2009-12-22" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll 'Replace:=wdReplaceAll objDoc.Save objWord.Documents.Close Set objDoc = Nothing Set objSelection = Nothing End if '#1 Next objWord.Quit -------------------------------------- これは、内容をどう変えたらヘッダやフッタ部分も 置換してくれるようになりますか? また、Excel用にするには、このスクリプト内の "Word"を"Excel"に変えるだけで良いのでしょうか? 参考までに、OSはXPです。 足りない情報等ございましたらご指摘願います。 どうぞよろしくお願いいたします。

  • 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

  • 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

  • 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

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

    こんにちは いつもお世話になっています ワード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

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

    よろしくお願いします。 マクロの知識はほとんどないのですが、 「マクロの記録」の機能を使い、ワードで 「スペースを探し出し、そのスペースにアンダーラインを引く。」 ために、 -------------------- 編集ー置換ー 検索する文字列にスペースをタイプ、 置換後の文字列にスペースをタイプ、 オプションの書式で、フォント、下線、一重下線 すべて置換 -------------------- マクロの記録を選択した後、上のように作業しました。 そしてマクロの記録をとめました。 マクロの記録中の操作では、思い通りに置換されるのですが、 次にそのマクロを作動させると、なにもおこりません。 なにか変な操作をしたのか、と五度くらい試したのですが、 やはり動きません。 中身は、↓のようでした。 -------------------- 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 -------------------- どうしてうまく動かないのでしょうか。 教えていただけるとありがたいです。よろしくお願いします。

  • VBSでWordの文字色変え

    VBSなのですが Wordファイルをドラッグしたら <と>で囲まれた文字の色を変更して保存する というものを考えております が <============= 部分でコンパイルエラー(ステーメントがありません) が発生します 初心者でさっぱりわからないのですが どなたかお助けを! よろしくお願いいたします 以下ソース Dim objWord Dim f Dim m If WScript.Arguments.Count<1 Then m="Hello!" MsgBox m WScript.Quit End If Set objWord=CreateObject("Word.Application") objWord.Visible=True For Each f In WScript.Arguments objWord.Documents.Open f objWord.Selection.Find.ClearFormatting objWord.Selection.Find.Replacement.ClearFormatting objWord.Selection.Find.Replacement.Font.Color = wdColorRed With objWord.Selection.Find .Text = "\<[!\>]@\>" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With objWord.Selection.Find.Execute Replace:=wdReplaceAll '<======================= objWord.ActiveDocument.SaveAs f&".doc" objWord.ActiveDocument.Close Next objWord.Quit WScript.Quit

  • WHSでWordのテキストボックス内文字列を置換

    ★環境★ OS:windows2000 WSH:5.6 Word:2000 ★質問★ 下記の関数を使ってWordファイルの文字列置換を自動で行うことができるようになりました。 しかしテキストボックス内の文字列が置換対象になりません。 どのような施しをすればよいのでしょうか。 よろしくお願いします。 set objword=Wscript.CreateObject("word.Application") Const wdReplaceAll=2            ・            ・            ・ sub replacetext(beforeText,afterText) objword.selection.find.text=beforeText objword.selection.find.forward=true objword.selection.find.matchwholeword=true objword.selection.find.replacement.text=afterText objword.selection.find.replacement ,,,,,,,,,,wdReplaceAll end sub

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

    下記のコードで、実行できます。大部分はマクロを記憶し、同じ処理を重ねただけのものです。 目的は、ワードで選択した文字列の中から数字を削除します。 ただし、下記のような場合は削除しません。 【請求項1】、項2、ないし3、いずれか1、【0019】、第3の、 この処理を行うために、差別化しました。 まず、数字を赤字で太字にしました。 次に、上記の、削除しては具合が悪い数字については、明朝で標準に戻すようにしてから、赤字で太字の数字を削除しました。 2000文字を超えるので、途中大幅にカットしました。 以下は、コードです。 ~~~~~~~~~~~~~~~~~~~~~~~~ Private Sub 符号削除() Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Range.Find .ClearFormatting .Text = "第1" .Replacement.Text = "" .Replacement.Font.Color = 1 .Replacement.Font.Bold = False .Execute Replace:=wdReplaceAll End With Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Range.Find .ClearFormatting .Text = "第2" .Replacement.Text = "" .Replacement.Font.Color = 1 .Replacement.Font.Bold = False .Execute Replace:=wdReplaceAll End With Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Range.Find .ClearFormatting .Text = "又は2" .Replacement.Text = "" .Replacement.Font.Color = 1 .Replacement.Font.Bold = False .Execute Replace:=wdReplaceAll End With ↓以下、20まで繰り返し Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Range.Find .ClearFormatting .Text = "乃至20" .Replacement.Text = "" .Replacement.Font.Color = 1 .Replacement.Font.Bold = False .Execute Replace:=wdReplaceAll End With Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "1" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll ↓以下、9,0まで繰り返し Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "9" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "0" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub ~~同じ繰返しを短くする部分の正規表現の使い方やloopを指南していただけたら幸甚です。

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

    以下のようなマクロを作成しましたが、文章の最後まで連続置換をしたい場合はどうすればよいのでしょうか。 ご教示をお願い致します。 ************************ 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 ************************