FAQ Visual Basic

FAQ Visual Basic Consultez toutes les FAQ
Nombre d'auteurs : 50, nombre de questions : 300, dernière mise à jour : 15 juin 2021
Sommaire→Liaison Office→Word- Comment connaître la version de Word installée ?
- Comment savoir si Word est déjà ouvert ?
- Comment ouvrir Word ou un fichier Word avec OLE ?
- Comment créer un nouveau document Word ?
- Comment imprimer un document Word ?
- Comment lister les propriétés d'un document Word ?
- Comment connaître le nombre de pages d'un document Word ?
- Comment désactiver la correction orthographique de Word ?
- Comment modifier les marges d'un document Word, exprimées en cm ?
- Comment intercepter la fermeture de WORD
Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Private Function InfoWordVersion() As String
Dim objWord As Word.Application
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
InfoWordVersion = "Version: " & objWord.Version & vbCrLf & _
"Build: " & objWord.Build & vbCrLf & "Product Code: " & objWord.ProductCode()
objWord.Quit '-- fermer la session Word
Set objWord = Nothing '-- détruire l'objet Word
End Function
Private Sub Form_Load()
MsgBox InfoWordVersion
End Sub
Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Cette fonction booléenne renvoie "Vrai" si Word est déjà ouvert, sinon, renvoie "Faux"
Private Function IsWordOpen() As Boolean
Dim objWord As Word.Application
On Error Resume Next
Set objWord = GetObject(, "Word.Application")
IsWordOpen = Not objWord Is Nothing
Set objWord = Nothing '-- détruire l'objet Word
End FunctionVous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Ce premier exemple ouvre un fichier Word, affiche son texte avec MsgBox, et ferme le fichier.
Dim DocWord As Word.Document
Set DocWord = GetObject("c:\mes documents\Article.doc")
DocWord.Activate
MsgBox DocWord.Range.Text
DocWord.Close False
Set DocWord = NothingCe deuxième exemple ouvre Word, crée un nouveau document, et rend la fenêtre de l'application visible.
Dim objWord As Word.Application
Dim docWord As Word.Document
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
Set docWord = objWord.Documents.Add
objWord.Visible = True '-- voir l'application Word
docWord.SaveAs sDoc '-- enregistrer le nouveau document
Set objWord = Nothing '-- détruire l'objet WordVous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Private Sub CreateNewDocWord(sDoc As String)
Dim objWord As Word.Application
Dim docWord As Word.Document
Dim Fichier As String
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
Set docWord = objWord.Documents.Add '-- Ajouter un nouveau document à la collection
objWord.Visible = True '-- montrer l'application Word
docWord.SaveAs FileName:=sDoc
Set docWord = Nothing '-- détruire l'objet Document
Set objWord = Nothing '-- détruire l'objet Word
End SubExemple :
Private Sub Command1_Click()
CreateNewDocWord "c:\MonNouveauDocument.doc"
End SubVous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Private Sub PrintDocWord(sDoc As String)
Dim objWord As Word.Application
Dim docWord As Word.Document
Dim Fichier As String
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
objWord.Visible = False '-- masquer l'application Word
Set docWord = objWord.Documents.Open(sDoc) '-- ouvrir le document Word
docWord.PrintOut '-- imprimer le document
docWord.Close '-- fermer le document Word
objWord.Quit '-- fermer la session Word
Set docWord = Nothing '-- détruire l'objet Document
Set objWord = Nothing '-- détruire l'objet Word
End SubExemple :
Private Sub Command1_Click()
CommonDialog1.Filter = "Fichiers Word (*.doc)|*.doc"
CommonDialog1.ShowOpen
PrintDocWord CommonDialog1.FileName
End SubVous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Private Sub ProprietesDocWord(sDoc As String)
Dim objWord As Word.Application
Dim docWord As Word.Document
Dim Propriete As Object
On Error GoTo ProprietesDocWord_Error
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
objWord.Visible = False
Set docWord = objWord.Documents.Open(sDoc) '-- ouvrir le document Word
'-- liste toutes les propriétés et leur valeur dans la fenêtre de deboggage
For Each Propriete In docWord.builtinDocumentProperties
On Error Resume Next
Debug.Print "Nom : " & Propriete.Name & " = " & Propriete.Value
Next
docWord.Close '-- fermer le document Word
objWord.Quit '-- fermer la session Word
' objWord.Quit SaveChanges:=wdDoNotSaveChanges
Set docWord = Nothing '-- détruire l'objet Document
Set objWord = Nothing '-- détruire l'objet Word
Exit Sub
ProprietesDocWord_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure ProprietesDocWord"
Err.Clear
Set docWord = Nothing '-- détruire l'objet Document
Set objWord = Nothing '-- détruire l'objet Word
End SubExemple :
Private Sub Command1_Click()
CommonDialog1.Filter = "Fichiers Word (*.doc)|*.doc"
CommonDialog1.ShowOpen
compterNombrePagesDocWord CommonDialog1.FileName
End SubVous trouverez un exemple d'utilisation des propriétés d'un document dans le lien ci-dessous
Lien : Comment connaître le nombre de pages d'un document Word ?
Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Private Function NombrePagesDocWord(sDoc As String) As Integer
Dim objWord As Word.Application
Dim docWord As Word.Document
On Error GoTo compterNombrePagesDocWord_Error
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
Set docWord = objWord.Documents.Open(sDoc) '-- ouvrir le document Word
With docWord
NombrePagesDocWord = .builtinDocumentProperties("Number of Pages")
End With
docWord.Close '-- fermer le document Word
objWord.Quit '-- fermer la session Word
Set docWord = Nothing '-- détruire l'objet Document
Set objWord = Nothing '-- détruire l'objet Word
Exit Function
compterNombrePagesDocWord_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure compterNombrePagesDocWord"
Err.Clear
Set docWord = Nothing '-- détruire l'objet Document
Set objWord = Nothing '-- détruire l'objet Word
End FunctionExemple :
Private Sub Command1_Click()
CommonDialog1.Filter = "Fichiers Word (*.doc)|*.doc"
CommonDialog1.ShowOpen
DoEvents
MsgBox "Il y a " & compterNombrePagesDocWord(CommonDialog1.FileName) & " page(s) _
dans le document Word : " & CommonDialog1.FileTitle
End Sub
Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Après avoir instancié Word dans votre code, vous pouvez appeler une procédure codée comme suit :
Sub DesactiverCorrectionDocument(ByVal oWord As Word.Application)
Const PERSO_DIC_PATH As String = "C:\Documents and Settings\UserName\Application Data\Microsoft\Épreuve\PERSO.DIC"
With oWord
.Options.CheckSpellingAsYouType = False
.Options.CheckGrammarAsYouType = False
.Options.SuggestSpellingCorrections = True
.Options.SuggestFromMainDictionaryOnly = False
.Options.CheckGrammarWithSpelling = False
.Options.ShowReadabilityStatistics = True
.Options.IgnoreUppercase = True
.Options.IgnoreMixedDigits = True
.Options.IgnoreInternetAndFileAddresses = True
.Options.AllowCombinedAuxiliaryForms = True
.Options.EnableMisusedWordsDictionary = True
.Options.AllowCompoundNounProcessing = True
.Options.UseGermanSpellingReform = False
.ActiveDocument.ShowGrammaticalErrors = True
.ActiveDocument.ShowSpellingErrors = True
.Languages(wdFrench).SpellingDictionaryType = wdSpelling
.Languages(wdFrench).DefaultWritingStyle = "Vérification rapide"
.ActiveDocument.ActiveWritingStyle(wdFrench) = "Vérification rapide"
.CustomDictionaries.ClearAll
.CustomDictionaries.Add(PERSO_DIC_PATH).LanguageSpecific = False
.CustomDictionaries.ActiveCustomDictionary = CustomDictionaries.Item(PERSO_DIC_PATH)
End With
End Sub
Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Cette fonction reçoit en paramètres optionnels :
- le nom du document (si ce paramètre est omis, un nouveau document est créé
- les valeurs des marges à définir (seules les valeurs spécifiées seront modifiées)
Private Function MargesDocWord(Optional sDoc As String = "", Optional lMargin, Optional rMargin, _
Optional tMargin, Optional bMargin) As Boolean
Dim objWord As Word.Application
Dim docWord As Word.Document
On Error GoTo MargesDocWord_Error
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
If sDoc = "" Then
Set docWord = objWord.Documents.Add '-- créer un nouveau document Word
Else
Set docWord = objWord.Documents.Open(sDoc) '-- ouvrir le document Word
End If
objWord.Visible = True
With docWord.PageSetup
If Not IsMissing(lMargin) Then .LeftMargin = objWord.CentimetersToPoints(lMargin)
If Not IsMissing(rMargin) Then .RightMargin = objWord.CentimetersToPoints(rMargin)
If Not IsMissing(tMargin) Then .TopMargin = objWord.CentimetersToPoints(tMargin)
If Not IsMissing(bMargin) Then .BottomMargin = objWord.CentimetersToPoints(bMargin)
End With
MargesDocWord = True
Exit Function
MargesDocWord_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure MargesDocWord"
Err.Clear
MargesDocWord = False
End FunctionExemple :
Private Sub Command1_Click()
CommonDialog1.Filter = "Fichiers Word (*.doc)|*.doc"
CommonDialog1.ShowOpen
MargesDocWord CommonDialog1.FileName, 1.2, 1.2, 1.5, 1.5
End Sub
Lorsqu'on pilote WORD en automation, il est possible d'accéder aux événements de l'objet application Word.
Pour cela on crée un module de classe, ClassWord, qui va nous permettre d'intercepter l'événement Quit.
Public WithEvents AppWord As Word.Application
Private Sub AppWord_Quit()
AppWord.WindowState = wdWindowStateMinimize 'Minimise la fenêtre word
MsgBox "Fin de word" 'Attente du clic opérateur pour fermer word
End SubUne initialisation est nécessaire :
Dim MonWord As New Word.Application
Dim X As New ClassWord
Private Sub Form_Load()
Set X.AppWord = MonWord.Application ' Initialise le gestionnaire d'événements.
MonWord.Visible = True
'Pour l'exemple création d'un nouveau document
Dim MonDoc As Word.Document
Set MonDoc = MonWord.Documents.Add
MonDoc.Range.InsertAfter "Bonjour .. "
End SubPensez à cocher la référence à Microsoft Word X..



