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