2016-04-29 12 views
0

私はそれは、複数のSystem.Runtime.InteropServices.COMExceptionのSystem.Runtime.InteropServices.COMException私は言葉でこの相互運用のコードを実行すると

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click 
    If Origcv = "" Then 
     Label10.Text = "Select a CV" 
    Else 
     ' Create application instance. 
     Dim app As Application = New Application 

     ' Open specified file. 
     Dim doc As Document = app.Documents.Open(Origcv) 

     ' Loop through all words. 
     Dim count As Integer = doc.Words.Count 
     Dim cvw(count) As String 
     For i As Integer = 1 To count 
      ' Write word to screen. 
      Dim text As String = doc.Words(i).Text 

      cvw(i) = doc.Words(i).Text 
     Next 
     ' Quit the application. 
     app.Quit() 
で終わるWord文書をテキストを脱いで、このコードを実行すると、

.countが成功しても、エラーはすべてdoc.words(I).textに記録されます。私はwordと.netのすべてのコンポーネントをインストールしていますが、これを動作させることはできません。私はそれが工場出荷時にリセットされる前に私はラップトップで前に同じコードを使用して正常に動作していたので、私はいくつかの種類のコンポーネントや設定がないと仮定し、interop.word参照が認識され、タブ。ここで助けが必要なのは、これをすばやく完了させる必要があり、これは文字通りの最初のハードルです。

すべてのヘルプは、私はあなたの問題は、構造物のこの種のは常に危険ですDim app As Application = New Applicationであると考えてい

+0

正確なエラーがスローされていることについての詳細がないと、問題の内容を知ることができません。 Try ... Catchブロックにコードを入れ、Exception.Messageをキャプチャします。 OfficeはTry ... Catchなしですべてのエラーメッセージを.NETに戻すわけではないので、より有用な情報を提供することができます。また、String配列には注意が必要です。.NET Frameworkでは、これは0から始まり、1から始まります(doc.Wordsでは正しいが、.NET配列では正しくありません)。最後のループでは添え字が範囲外です。 –

+0

エラーCOMコンポーネントへの呼び出しからHRESULT E_FAILが返されました –

+0

参照の追加を再試行しました。また、単語機能にアクセスするための参照を追加しました。すべての機能がインストールされた単語を再インストールすると、単語のドキュメントにはタブの文字がないことが保証されますが、タブのないテストドキュメントを作成しても問題はありません。ターゲットフレームワークをnet 2.0に変更しようとしましたが、同じエラーが返されます。 –

答えて

2

を高く評価しました。多くの名前空間にはApplicationが使用されています。つまり、.NETにどのアプリケーションが意味されているかを示す修飾子はありません。 Namespace .NETが参照しているのはDocumentsクラスもあるため、Documents.Openが機能することもあります。

あなたは完全にそれを修飾する場合:

Dim app As Microsoft.Office.Interop.Word.Application = New Microsoft.Office.Interop.Word.Application() 

私は問題が離れて行くと信じています。その後

Imports Word = Microsoft.Office.Interop.Word 

それがない場合は、Wordの名前空間内のオブジェクトを修飾するためにエイリアスを使用して名前空間にエイリアスを割り当て、モジュールの先頭にImportsを置くには、(物事短くします)

Dim app as Word.Application = New Word.Application() 
Dim doc as Word.Document = app.Documents.Open(Origcv) 
+0

残念ながら、残念ながらまだ\t 'エラーHRESULT E_FAILがCOMコンポーネントへの呼び出しから返されました。これは、再配布が不足しているとかパーミッションが停止していると思われています。すべてのinterop機能がドロップダウンエラーにリストされます。なぜ私はそれが前に働いていたのかわからないし、今ではない、私が考えることができる唯一のものは、私はVisual Studioの別のバージョンを使用していたということです。 –

+0

ちょっと考えましたが、文字通り私のプロジェクトディレクトリをドライブのバックアップにドラッグし、工場出荷時の設定に戻してコピーしたため、これが起こっている可能性があります。私は新しいプロジェクトを作り直してみるつもりです。 –

+0

は新しいプロジェクトを作成したばかりで、このコードを実行すると同じ問題が発生します。実際のシステムでは何かが間違っていなければならないと思います。 –