2016-04-29 2 views
0

Когда я запускаю этот код, чтобы взять текст от документа слово он заканчивается с несколькими System.Runtime.InteropServices.COMException «sSystem.Runtime.InteropServices.COMException, когда я запускаю этот код Interop со словом

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() 

Ошибки все приходят на doc.words (I) .text, даже если .count преуспел. Я установил все компоненты слова и .net и до сих пор не могу заставить это работать. Раньше я работал нормально, когда раньше использовал тот же код на моем ноутбуке до того, как он был перезагружен, поэтому я предполагаю, что у меня отсутствует какой-либо компонент или параметр, ссылка interop.word распознается и имеет путь к файлам по ссылкам вкладка. Любая помощь здесь должна быть быстро завершена, и это буквально первый барьер.

Любая помощь оценили

+0

Без дополнительной информации о точной ошибке (-ах), которая может быть выброшена, неизвестно, в чем проблема. Поместите свой код в блок Try ... Catch и захватите Exception.Message. Office не передает все сообщения об ошибке обратно в .NET без Try ... Catch, так что может предоставить более полезную информацию. Кроме того, будьте осторожны с вашим массивом String: в .NET Framework они основаны на нуле, и вы начинаете с 1 (что верно для doc.Words, но не для .NET-массива). И в последнем цикле индекс будет вне диапазона. –

+0

ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента –

+0

Я пробовал повторное добавление ссылки - я также добавил дополнительные ссылки, которые могут иметь отношение к доступу к функциям слов, я установил PIA для взаимодействия со словом. Re установленное слово со всеми функциями, я не могу гарантировать, что документ слова не будет иметь никаких символов табуляции, поскольку у меня нет контроля над их созданием, но я сумасшедший свой собственный тестовый документ без вкладок вообще, и я думаю, что это не проблема. Я попытался изменить целевую структуру на net 2.0, но возвращает ту же ошибку. –

ответ

2

Я считаю, что ваша проблема Dim app As Application = New Application Этот вид конструкции всегда опасно. Во многих пространствах имен используется Application - у вас нет спецификатора, который сообщает .NET, какое приложение предназначено. Тот факт, что Documents.Open работает, также может быть вызван тем, что пространство имен .NET также имеет класс Documents.

Если вы полностью квалифицировать:

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

Я считаю, что проблема исчезнет.

Если это делает, положить Imports в верхней части модуля, который присваивает псевдоним для пространства имен затем использовать псевдоним, чтобы квалифицировать объекты в пространстве имен Word (делает вещи более короткие):

Imports Word = Microsoft.Office.Interop.Word 

Тогда

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

К сожалению, все еще \t 'ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента. «Я начинаю думать, что это потому, что мне не хватает переименования или потому что разрешения останавливают его. Все функции взаимодействия описаны в раскрывающихся списках. Я понятия не имею, почему он работал раньше, и теперь это не так, единственное, что я могу думать, это то, что я использовал другую версию визуальной студии. –

+0

Просто мысль, но, возможно, это происходит потому, что я буквально просто потащил свой каталог проектов на резервный диск и затем скопировал его обратно на заводской перезагрузке. Я попытаюсь создать новый проект и повторить его. –

+0

только что создал новый проект, и эта проблема возникает, когда я запускаю этот код. Я думаю, что это должно быть что-то неправильно с реальной системой. –