VB.netでWORD操作できませんエラーの解決方法

このQ&Aのポイント
  • VB.netでWORD操作する際に起こるエラーについて解決方法をご紹介します。
  • 問題はWORD操作中にデバッガがプロセスの実行を処理できないことです。
  • 要約文章の例文で示されているコードの部分にエラーが発生し、メッセージを表示してAbendします。
回答を見る
  • ベストアンサー

VB.netでWORD操作すると"デバッガはプロセスの実行を処理できま

VB.netでWORD操作すると"デバッガはプロセスの実行を処理できません” になってしまいます。 VB.netでWORD文書を開き、内容を置換しています。 Dim oWord As Word.Application Dim oDoc As Word.Document oWord = CreateObject("Word.Application") oDoc = oWord.Documents.Open("c:\aaa.docx", , True) With oWord.Selection.Find ← ここで発生します。 .ClearFormatting() .Text = "@TANTO@" With .Replacement .ClearFormatting() .Text = wdr("担当") End With .Execute(Replace:=Word.WdReplace.wdReplaceAll) End With エラーはTRYを通らず、上記の場所でメッセージを表示し、Abendしてしまいます。 非常に困っています。 ヒントでも参考になるサイトでも構いません。 よろしくお願いいたします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

#1です。 私の所はXP PRO SP3 + Office2007 ですが、 Findでは発生せず、Textプロパティを操作すると 異常終了します。状況が違うので、何とも言えない のですが、落ち方が単なるエラーではないので、 ライブラリのバグである可能性が高いでしょう。 COMモデルとして操作するのはこれが改善されない 限り、あきらめた方がよさそうです。

papope
質問者

お礼

ご回答ありがとうございます。 どうも、おかしいと思い昨日、OfficeとVisualStudioを修復インストール してみました。 なんと、治りました・・・・。 現在、問題なく動作しております。 ご参考までに環境は XP Pro SP3 VisualStudio2008 Pro です。 #1さんも同様の状況のようなので、2,3日閉じないでおきます。 何かありましたらお答えさせていただきます。 皆様、ありがとうございました。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

#1です。 参照設定で追加したWordのライブラリの バージョンは12.0でしょうか? 当方で試しましたが、指定位置で例外は 発生しません。

papope
質問者

補足

ご回答、ありがとうございます。 再度、確認いたしましたが、 Microsoft.Office.Interop.Wordの12.0.0.0.0 です。 なぜエラーになるのかも不明な状況です。 よろしくお願いいたします。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

>oWord.Selection.Find (1)oWord.SelectionがNothingではないか (2)oWord.Selection.FindがNothingではないか 以上の2点はどうなってますか? 選択した領域(Selection)がない状態なのでは?

papope
質問者

補足

ご回答ありがとうございます。 (1)(2)はNothingになっておりませんでした。 申し訳ありませんが、選択した領域がない状態というのは、どういう状態のことを言うのでしょうか? WORDを起動して文書をOPENしてその文書の埋め込み文字に対して置換を掛けるという処理なのですが。 (Textboxなどは別の処理で行っております。) VBAのコードを移植しただけで動作するものと思っていただけに痛い状態にあります。 (インターネットでもVBAのコードと同様で処理できるような記入があったもので) Stepinを止め処理すると 『外部コンポーネントが例外をすろーしました。』 というメッセージに変わります。 非常に困っております。よろしくお願いいたします。

関連するQ&A

  • AccessVBAからWordのマクロを実行するには

    [環境]Access2000,Word2000 AccessVBAでWordのオブジェクトをつくりファイルを開くところまでは たどり着いたのですが、開いたWordファイルにあるマクロを実行させる ことが出来ずに困っています。 WordオブジェクトのApplicationとDocumentsオブジェクトの関係も把握 しきれていないため、おかしなソースになっているかも知れません。 よろしくお願いします。 sub DoMacro() Dim oWrd as Word.Application Dim oDoc as Word.Document Set oWrd = New Word.Application With oWrd Set oDoc = oWrd.Documents.Open("c:\test.doc") .Visible = True .Application.Run ("Macro1") oDoc.SaveAs "c:\newTest.doc" .Quit End With 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

  • 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の繰り返し処理で検索置換ウインドウが作動しない検索置換のコードがあれば教えていただけると幸甚です。

  • ExcelVBAマクロについて確認させてください。

    ExcelVBAマクロについて確認させてください。 Wordファイルを開いて変数に保存するプログラムを作成したいのですが、下記の「With .Documents.Open(sFullPath)」のところで”型が一致しません。”と表示され、うまくいきません。 この原因は何か考えられるのでしょうか。 回避策をお教えいただければと思います。 Dim sFullPath As Variant Dim moji As String sFullPath = "C:\ドキュメント\test\AAAAA.docx" With CreateObject("Word.Application") With .Documents.Open(sFullPath) moji = .Content.Text .Close End With .Quit End With

  • WORD VBA 繰り返し処理

    WORD VBAについて教えてください。 つぎのようなマクロがあり、これを検索する文字列がなくなるまで、繰り返して、処理するようにしたいのですが、どうすればよいのでしょうか? Sub Macro1() Selection.Find.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 Selection.MoveRight Unit:=wdCharacter, Count:=1 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

  • ACCESS どなたか教えてください。

    現在,以下の構文を記載している状態です。 Private Sub コマンド62_Click() Dim Appwo As Word.Application Dim doc As Word.Document Dim stPath As String stPath = "C:\Users\pigo\Desktop\納品書.docx" Set Appwo = CreateObject("Word.Application") Set doc = Appwo.Documents.Open(stPath) Appwo.Visible = True With Appwo.Selection .Find.Text = "明細" .Find.Replacement.Text = Me.txt明細 .Find.Execute Replace:=wdReplaceAll End With With Appwo.Selection .Find.Text = "納品日" .Find.Replacement.Text = Me.txt納品日 .Find.Execute Replace:=wdReplaceAll End With Set Appwo = Nothing Set doc = Nothing End Sub ここで質問なのですが,フォーム上には,納品日として「平成16年4月12日」と記載されているのです(フォームプロパティの書式は,[ggge\年m\月d\日])が,コマンド62を実行した結果のWord上では,「納品日」の部分の置き換えとして「2004/04/12」との表示となってしまいます。 Word上でもそのまま「平成16年4月12日」と表示させたいのですが,どうすればよいのか分かりません。 どなたかお教えいただければ幸いです。よろしくお願いいたします。

  • WORDマクロで単語リストテキスト内からヒットしたものだけを書き出したい

    ワードの文章中にList.txtに入っている単語をハイライトして太字に変更していくマクロを作成してみました。 検索にヒットした単語だけを outlist.txt へ書き出したいのですがどのような方法があるかご教授願えませんでしょうか。 現状だとすべての単語が書き出しされてしまいます。 過去ログやヘルプから見よう見真似で作成したマクロですので間違っている箇所もあるかもしれませんが、よろしくおねがいします。 list.txtは以下のように1単語で改行しているテキストです。 AAA BBB CCC ・ ・ Sub test1() Open "c:\list.txt" For Input As #1 Open "c:\outlist.txt" For Output As #2 While Not EOF(1)  Line Input #1, a  Selection.Find.ClearFormatting  With ActiveDocument.Content.Find .ClearFormatting .Text = a With .Replacement .ClearFormatting .Font.Bold = True .Highlight = True .Text = a End With .Execute Format:=True, Replace:=wdReplaceAll  End With Print #2, a Wend Close #2 Close #1 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

  • VB2008を使ってWordやExcelを制御したいです。

    現在VB2008を勉強中の初心者です。例えば、VB2008からWordを開いてマクロを使った場合と同等の処理を行うことは可能でしょうか。 以下はWord2003で作成したマクロの一部を抜粋したものですが、例えば以下のように特定の文字を検索したり、置換したりといったドキュメント内の細かな制御はできるのでしょうか。 マクロを使えば?と言われればそれまでですが、勉強がてら大変興味があり、投稿しました。 ご存知の方、何卒よろしくお願いします。 Selection.Find.Replacement.Font.ColorIndex = wdRed With Selection.Find '置換前文字列を段落記号に設定 .Text = "^p" '置換後文字列を段落記号に設定 .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .MatchByte = False .MatchFuzzy = False End With