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
- 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
Function
Vous 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 =
Nothing
Ce 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 Word
Vous 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
Sub
Exemple :
Private
Sub
Command1_Click
(
)
CreateNewDocWord "c:\MonNouveauDocument.doc"
End
Sub
Vous 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
Sub
Exemple :
Private
Sub
Command1_Click
(
)
CommonDialog1.Filter
=
"Fichiers Word (*.doc)|*.doc"
CommonDialog1.ShowOpen
PrintDocWord CommonDialog1.FileName
End
Sub
Vous 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
Sub
Exemple :
Private
Sub
Command1_Click
(
)
CommonDialog1.Filter
=
"Fichiers Word (*.doc)|*.doc"
CommonDialog1.ShowOpen
compterNombrePagesDocWord CommonDialog1.FileName
End
Sub
Vous 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
Function
Exemple :
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
Function
Exemple :
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
Sub
Une 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
Sub
Pensez à cocher la référence à Microsoft Word X..