2010-12-06 5 views
2

J'ai une application Windows Form VB.Net Network Deploy .Net 3.5 qui faisait référence à la DLL de la bibliothèque Microsof Office 12.0.Problème de vérification orthographique de bureau VB.Net

Depuis la semaine dernière, le code suivant fonctionnait, cependant, l'équipe des opérations a mis à niveau Office de tout le monde (pas une mise à niveau majeure, juste une mise à niveau mineure). Fondamentalement, lorsque le vérificateur d'orthographe est en cours d'exécution, il est caché derrière l'application VB.Net et il semble que l'application est maintenant gelée. Quand je regarde le gestionnaire de tâches, je vois l'instance d'Office en cours d'exécution et quand je mets ce programme à l'avant (dans le Gestionnaire des tâches), je vois la boîte de vérification orthographique et peut continuer à travers. Je ne suis pas sûr dans mon code ce qui me manque pour définir la priorité de la case Vérification orthographique afin qu'elle soit au-dessus de l'application.

À partir d'aujourd'hui j'ai utilisé la version 2.0.5 de la bibliothèque 12.0 mais à l'origine j'utilisais 1.2.x de cette DLL. Cependant mise à niveau vers la dernière version n'a rien fait. J'ai eu les mêmes résultats.

Je devrais également noter que j'ai regardé un vérificateur d'orthographe de 3ème partie (composant un) et cela a exigé la personnalisation dans le dictionnaire. J'espère donc pouvoir utiliser Office comme il l'avait fait la semaine dernière!

Toutes les idées ou suggestions sont les bienvenues:

'Check subject line 
If Me.txtSubject.TextLength > 0 And Me.txtSubject.Enabled = True Then 
    Dim objWA As New Word.Application 

    'objWA.Visible = False 
    Dim objWD As Word.Document = objWA.Documents.Add 
    'objWA.WindowState = Word.WdWindowState.wdWindowStateNormal 
    Try 
     With objWD 
      .Range.Text = Me.txtSubject.Text 
      .Activate() 
      .CheckSpelling() 
      .Content.Copy() 

      If Clipboard.GetDataObject.GetDataPresent(DataFormats.Text) Then 
       Me.txtSubject.Text = CType(Clipboard.GetDataObject.GetData(DataFormats.Text), String) 
      End If 

      .Saved = True 
      objWA.Visible = False 
      .Close(Word.WdSaveOptions.wdDoNotSaveChanges) 
     End With 

     'Application.DoEvents() 
     objWA.Quit() 
     objWA.Visible = False 'need this to get around the save prompt pop up 

    Catch compEx As COMException 
     MessageBox.Show("Microsoft Word must be installed for Spell Check to run.", "CustomerServiceTool", MessageBoxButtons.OK, MessageBoxIcon.Error) 

    Catch ex As Exception 
     If Err.Number = 5 Then 'bypass Clipboard operation failed errors 
      objWA.Visible = False 
      objWA.Quit() 
     Else 
      MessageBox.Show(Err.Description, "CustomerServiceTool", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     End If 
    Finally 
     objWD = Nothing 
     objWA = Nothing 
    End Try 


End If 

'Check Message body 
If Me.txtResponse.Text.Length > 0 Then 
    Dim objWA1 As New Word.Application 
    ' Dim objWA1 As Word._Application 
    ' objWA1 = New Word.Application 

    objWA1.Visible = False 
    Dim objWD1 As Word.Document = objWA1.Documents.Add 

    Try 
     objWD1.Activate() 
     With objWD1 
      .Range.Text = Me.txtResponse.Text 

      .CheckSpelling() 
      .Content.Copy() 

      If Clipboard.GetDataObject.GetDataPresent(DataFormats.Text) Then 
       Me.txtResponse.Text = CType(Clipboard.GetDataObject.GetData(DataFormats.Text), String) 
      End If 

      .Saved = True 
      objWA1.Visible = False 
      .Close(Word.WdSaveOptions.wdDoNotSaveChanges) 
     End With 


     'Application.DoEvents() 
     objWA1.Quit() 
     MessageBox.Show("The spelling check is complete.", "CustomerServiceTool", MessageBoxButtons.OK, MessageBoxIcon.Information) 

    Catch compEx As COMException 
     MessageBox.Show("Microsoft Word must be installed for Spell Check to run.", "CustomerServiceTool", MessageBoxButtons.OK, MessageBoxIcon.Error) 

    Catch ex As Exception 
     If Err.Number = 5 Then 'bypass Clipboard operation failed errors 
      objWA1.Visible = False 
      objWA1.Quit() 
     Else 
      MessageBox.Show(Err.Description, "ASHLinkCST", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     End If 
    Finally 
     objWD1 = Nothing 
     objWA1 = Nothing 
    End Try 

End If 

Répondre

0

C'est l'un de ceux, administrateur contre mystères de développement ... L'administrateur du réseau disent qu'ils ne faisaient rien, et le développeur dit qu'il n'a pas changé Le code en 3 ans ...

Alors ... Ce que nous avons fait, c'est d'acheter un composant tiers indépendant du bureau ... Il semble avoir réglé le problème.

Questions connexes