FAQ Visual Basic Consultez toutes les FAQ

Nombre d'auteurs : 50, nombre de questions : 300, dernière mise à jour : 9 février 2020 

 
OuvrirSommaireLiaison OfficeWord

Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).

vb
Sélectionnez
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
Créé le 2 mai 2006  par SilkyRoad

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"

vb
Sélectionnez
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
Créé le 2 mai 2006  par SilkyRoad, ThierryAIM

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.

vb
Sélectionnez
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.

vb
Sélectionnez
    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
Créé le 29 juillet 2002  par Romain Puyfoulhoux

Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).

vb
Sélectionnez
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 :

vb
Sélectionnez
Private Sub Command1_Click()
    CreateNewDocWord "c:\MonNouveauDocument.doc"
End Sub
Créé le 2 mai 2006  par ThierryAIM

Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).

vb
Sélectionnez
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 :

vb
Sélectionnez
Private Sub Command1_Click()
    CommonDialog1.Filter = "Fichiers Word (*.doc)|*.doc"
    CommonDialog1.ShowOpen
    PrintDocWord CommonDialog1.FileName
End Sub
Créé le 2 mai 2006  par SilkyRoad

Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).

vb
Sélectionnez
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 :

vb
Sélectionnez
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

Créé le 2 mai 2006  par SilkyRoad, ThierryAIM

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...).

vb
Sélectionnez
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 :

vb
Sélectionnez
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
Créé le 2 mai 2006  par SilkyRoad

Lien : Comment lister les propriétés d'un document Word ?

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 :

vb
Sélectionnez
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
Créé le 13 juin 2005  par argyronet

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)
vb
Sélectionnez
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 :

vb
Sélectionnez
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
Créé le 2 mai 2006  par ThierryAIM

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.

 
Sélectionnez
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 :

 
Sélectionnez
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..

Créé le 22 décembre 2008  par bbil
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.