OVH Cloud OVH Cloud

VB.Net et Word

5 réponses
Avatar
Romain Casey
** Posté sur microsoft.public.fr.vb et microsoft.public.fr.word **


Bonjour,
Je souhaiterai pouvoir contrôler Word via VB.net (ouvrir un fichier,
vérifier l'orthographe et fermer le document), pour ce faire, j'utilise
ce code :


Imports Microsoft.Office.Interop.Word

Module M7_Orthogr

Public MyWord As New Microsoft.Office.Interop.Word.Application

Public Sub Word_Orthog(ByVal Nom_Document As String, Optional ByVal
_Visible As Boolean = True)
Dim WordOuvert As Boolean

On Error Resume Next
MyWord = GetObject(, "Word.Application")

If Err.Number <> 0 Then
MyWord = CreateObject("Word.Application")
End If

Err.Clear()

With MyWord
If .Documents.Count > 0 Then
WordOuvert = True
End If
.Visible = True
.Documents.Open(FileName:=Nom_Document)
End With

MyWord.ActiveDocument.CheckSpelling()
MyWord.ActiveDocument.Save()
If WordOuvert = True Then
MyWord.ActiveDocument.Close()
Else
MyWord.Quit()
End If

Frm1.RTB.LoadFile(PathS & "\" & NomFichier,
RichTextBoxStreamType.PlainText)
Frm1.Focus()

End Sub
End Module


Je compile avec Office 2003 sur ma machine et tout ça fonctionne. Quand
j'utilise l'application sur un PC avec Office XP, je n'ai pas d'erreur
mais j'ai l'impression qu'il ouvre et ferme Word sans rien faire. Je ne
comprend pas bien pourquoi. Vous n'auriez pas une idée pour que mon code
fonctionne avec toutes les versions de Word ?

Merci.


Romain

5 réponses

Avatar
geo
Bonjour Romain

Il se peut que ce soit un dysfonctionnement du
vérificatuer d'orthographe, ça arrive.
Mais ton resume Next peut tout masquer.
Il me semble qu'il faudrait mettre un
On error goto 0
avant l'open, pour voir.
Avatar
Anacoluthe
Bonjour !

A priori je ne vois pas d'incompatibilité WD2002 - WD2003 sur ce code.
Vos options linguistiques de vérification orthographe/grammaire ne
doivent probablement pas être les mêmes sur vos deux postes ...
Vérifiez dans Outils / Options ainsi que la langue par défaut :-p

Anacoluthe
« Orthographe. La science qui épelle avec l'oeil
à la place de l'oreille. »
- Ambrose BIERCE


'Romain Casey' nous a écrit ...
** Posté sur microsoft.public.fr.vb et microsoft.public.fr.word **


Bonjour,
Je souhaiterai pouvoir contrôler Word via VB.net (ouvrir un fichier,
vérifier l'orthographe et fermer le document), pour ce faire, j'utilise
ce code :


Imports Microsoft.Office.Interop.Word

Module M7_Orthogr

Public MyWord As New Microsoft.Office.Interop.Word.Application

Public Sub Word_Orthog(ByVal Nom_Document As String, Optional ByVal
_Visible As Boolean = True)
Dim WordOuvert As Boolean

On Error Resume Next
MyWord = GetObject(, "Word.Application")

If Err.Number <> 0 Then
MyWord = CreateObject("Word.Application")
End If

Err.Clear()

With MyWord
If .Documents.Count > 0 Then
WordOuvert = True
End If
.Visible = True
.Documents.Open(FileName:=Nom_Document)
End With

MyWord.ActiveDocument.CheckSpelling()
MyWord.ActiveDocument.Save()
If WordOuvert = True Then
MyWord.ActiveDocument.Close()
Else
MyWord.Quit()
End If

Frm1.RTB.LoadFile(PathS & "" & NomFichier,
RichTextBoxStreamType.PlainText)
Frm1.Focus()

End Sub
End Module


Je compile avec Office 2003 sur ma machine et tout ça fonctionne. Quand
j'utilise l'application sur un PC avec Office XP, je n'ai pas d'erreur
mais j'ai l'impression qu'il ouvre et ferme Word sans rien faire. Je ne
comprend pas bien pourquoi. Vous n'auriez pas une idée pour que mon code
fonctionne avec toutes les versions de Word ?

Merci.


Romain


Avatar
Anacoluthe
Bonjour !

'geo' nous a écrit ...
Mais ton resume Next peut tout masquer.


Oupss bien vu Geo !

Jamais mettre de On Error Resume Next en phase de test !!!

Anacoluthe
« Aime la vérité, mais pardonne à l'erreur. »
- VOLTAIRE

Avatar
geo
Bonsoir

Jamais mettre de On Error Resume Next en phase de test !!!



Je pense qu'il en a qaund même besoin pour le Get et le
Create.

A+

Avatar
Romain Casey
Bonjour,
J'ai suivi vos remarques et voici le nouveau code, et le message
d'erreur avec Word XP, que je n'arrive pas à interpréter.

Merci


Romain



Code :
Imports Microsoft.Office.Interop.Word

Module M7_Orthogr

Public MyWord As New Microsoft.Office.Interop.Word.Application

Public Sub Word_Orthog(ByVal Nom_Document As String, Optional ByVal
_Visible As Boolean = True) 'As Word.Application
Frm1.Infos2.Text = "Lancement de Word"
System.Windows.Forms.Application.DoEvents()
Dim WordOuvert As Boolean

Try
Try
MyWord = GetObject(, "Word.Application")
Catch ex As Exception
MyWord = CreateObject("Word.Application")
End Try
Catch ex As Exception
MsgBox("Impossible de lancer Word, est-il installé sur
votre machine ?")
Exit Sub
End Try

With MyWord
If .Documents.Count > 0 Then
WordOuvert = True
End If
.Visible = True
.Documents.Open(FileName:=Nom_Document)
If .WindowState = WdWindowState.wdWindowStateMinimize Then
.WindowState = WdWindowState.wdWindowStateMaximize
End If
End With



MyWord.ActiveDocument.CheckSpelling() 'passer les options ?
MyWord.ActiveDocument.Save()
If WordOuvert = True Then
MyWord.ActiveDocument.Close()
Else
MyWord.Quit()
End If

Dim bug As Boolean = True
Dim i As Integer = 0

While bug = True
'pour éviter que l'appli ouvre le fichier avant que Word le libère
System.Windows.Forms.Application.DoEvents()
Try
Frm1.RTB.LoadFile(PathS & "" & NomFichier,
RichTextBoxStreamType.PlainText)
bug = False
Catch ex As Exception
End Try
End While

Frm1.RTB.LoadFile(PathS & "" & NomFichier,
RichTextBoxStreamType.PlainText)
Frm1.Focus()
End Sub
End Module



Erreur, word se lance et l'erreur apparait :
Consultez la fin de ce message pour plus de détails sur l'appel du débogage
juste-à-temps (JIT) à la place de cette boîte de dialogue.

************** Texte de l'exception **************
System.NullReferenceException: La référence d'objet n'est pas définie à
une instance d'un objet.
at Microsoft.Office.Interop.Word.Documents.Open(Object& FileName,
Object& ConfirmConversions, Object& ReadOnly, Object& AddToRecentFiles,
Object& PasswordDocument, Object& PasswordTemplate, Object& Revert,
Object& WritePasswordDocument, Object& WritePasswordTemplate, Object&
Format, Object& Encoding, Object& Visible, Object& OpenAndRepair,
Object& DocumentDirection, Object& NoEncodingDialog, Object& XMLTransform)
at SRAH.M7_Orthogr.Word_Orthog(String Nom_Document, Boolean _Visible)
at SRAH.F1_Start.LancerLaCorrection()
at SRAH.F1_Start.PC_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)


************** Assemblys chargés **************
mscorlib
Version de l'assembly : 1.0.5000.0
Version Win32 : 1.1.4322.2032
CodeBase :
file:///c:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll
----------------------------------------
SRAH
Version de l'assembly : 1.0.1808.40968
Version Win32 : 1.0.1808.40968
CodeBase : file:///C:/Program%20Files/SRAH/SRAH.exe
----------------------------------------
System.Windows.Forms
Version de l'assembly : 1.0.5000.0
Version Win32 : 1.1.4322.2032
CodeBase :
file:///c:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
Version de l'assembly : 1.0.5000.0
Version Win32 : 1.1.4322.2032
CodeBase :
file:///c:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
----------------------------------------
System.Drawing
Version de l'assembly : 1.0.5000.0
Version Win32 : 1.1.4322.2032
CodeBase :
file:///c:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
Microsoft.VisualBasic
Version de l'assembly : 7.0.5000.0
Version Win32 : 7.10.6001.4
CodeBase :
file:///c:/windows/assembly/gac/microsoft.visualbasic/7.0.5000.0__b03f5f7f11d50a3a/microsoft.visualbasic.dll
----------------------------------------
Accessibility
Version de l'assembly : 1.0.5000.0
Version Win32 : 1.1.4322.573
CodeBase :
file:///c:/windows/assembly/gac/accessibility/1.0.5000.0__b03f5f7f11d50a3a/accessibility.dll
----------------------------------------
Microsoft.Office.Interop.Word
Version de l'assembly : 11.0.0.0
Version Win32 : 11.0.5530
CodeBase :
file:///C:/Program%20Files/SRAH/Microsoft.Office.Interop.Word.DLL
----------------------------------------
mscorlib.resources
Version de l'assembly : 1.0.5000.0
Version Win32 : 1.1.4322.573
CodeBase :
file:///c:/windows/assembly/gac/mscorlib.resources/1.0.5000.0_fr_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
Microsoft.VisualBasic.resources
Version de l'assembly : 7.0.5000.0
Version Win32 : 7.10.3052.4
CodeBase :
file:///c:/windows/assembly/gac/microsoft.visualbasic.resources/7.0.5000.0_fr_b03f5f7f11d50a3a/microsoft.visualbasic.resources.dll
----------------------------------------
SYSTEM.WINDOWS.FORMS.resources
Version de l'assembly : 1.0.5000.0
Version Win32 : 1.1.4322.573
CodeBase :
file:///c:/windows/assembly/gac/system.windows.forms.resources/1.0.5000.0_fr_b77a5c561934e089/system.windows.forms.resources.dll
----------------------------------------

************** Débogage JIT **************
Pour activer le débogage juste-à-temps (JIT), le fichier de
configuration pour cette
application ou cet ordinateur (machine.config) doit avoir la valeur
jitDebugging définie dans la section system.windows.forms.
L'application doit également être compilée avec le débogage
activé.

Par exemple :

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

Lorsque le débogage juste-à-temps est activé, les exceptions non gérées
seront envoyées au débogueur JIT inscrit sur l'ordinateur
plutôt que d'être gérées par cette boîte de dialogue.