Easy-Micro


ESPACEMEMBRE VBA
Word et VBA

Liens avec l'applications Word

Pour avoir accès aux objets d'une autre application, donc pour manipuler les informations du serveur, on doit référencer sa bibliothèque d'objets (un fichier .olb) via le menu Outils / Références de l'éditeur VBA. Ce menu est la liste des serveurs OLE enregistrés dans la base de registre de Windows.

VBA La technologie Automation
Automation, appelée également OLE (Object Linking and Embedding) ou OLE Automation, est une technologie qui permet de manipuler les objets d'une autre application directement à partir d'Excel. Pour utiliser la technologie Automation, on doit définir dans le code VBA une variable objet associée aux objets de type application.

Pour réaliser notre exemple (Démarrer et écrire dans Word depuis Excel), il faut d'abord sélectionner une référence au module externe Word via le menu Outils / Références de l'éditeur VBA.
On coche l'option Microsoft Word 12.0 Object Library (11.0 correspond à 2003, 12.0 pour 2007et 14.0 pour 2010).

Démarrer et écrire dans Word depuis Excel : Exemple minima

Sub ecrire_dans_word()

Dim w As Word.Application 'déclaration de la variable objet w
Set w = New Word.Application

w.Documents.Add ' lance Word en mode masqué
w.Visible = True

' Selection représente le point d'insertion
w.Selection.TypeText Text:="Hello EveryBody"

' Autre syntaxe :
w.Selection.TypeText ("Hello EveryBody")

End Sub


Démarrer et écrire dans Word depuis Excel : Exemple plus complet

' Déclaration de variable
Public montexte1 As String

Sub ecriredansword()
' Initialisation de variable
montexte1 = "premier_texte"

Dim w As Word.Application 'déclaration de la variable objet w
Set w = New Word.Application

w.Documents.Add ' lance Word en mode masqué
w.Visible = True

' Ouvrir un modèle
w.Documents.Add Template:="C:Documents and Settings\Administrateur\Mes documents\monmodele.doc"

' Ou bien ouvrir
w.Documents.Open ("Documents/titi.doc") ' Attention: adresse complète obligatoire

' Format de la première ligne
w.Selection.Font.Size = 20
w.Selection.Font.Bold = True

' Ecrire du contenu
w.Selection.TypeText Text:="Salut à toutes et à tous"

w.Selection.TypeParagraph 'Changement de paragraphe

' Ecrire du contenu (avec la variable globale "montexte1")
w.Selection.TypeText Text:="Production 2009 : " & montexte1

' Création et initialisation de variables Word
w.ActiveDocument.Variables.Add ("MaVariable1")
w.ActiveDocument.Variables("Mavariable1").Value = "Bonjour"
' Deuxième syntaxe:
w.ActiveDocument.Variables.Add Name:="MaVariable2", Value:="Bienvenue"

' Initialisation d'une variable pré-existante dans Word
' Voir le menu insertion/champ/automatisation/variabledoc
w.ActiveDocument.Variables("nom").Value = "Coucou"

' Affichage du contenu des variables Word (ligne par ligne)
w.Selection.TypeText Text:=w.ActiveDocument.Variables("MaVariable1").Value

' Affichage du contenu des variables Word (boucle)
For Each maVar In w.ActiveDocument.Variables
w.Selection.TypeText Text:=maVar.Value
w.Selection.TypeParagraph 'Changement de paragraphe
Next maVar

' Création et remplissage de signet
w.ActiveDocument.Bookmarks.Add ("monsignet")
w.ActiveDocument.Bookmarks("monsignet").Range.Text = "Byby"

' Mise à jour des champs Word
w.ActiveDocument.Fields.Update

w.ActiveDocument.SaveAs "titi.doc"
w.ActiveDocument.Close

w.Quit

End Sub

Note: Pour éviter les ambigüités entre les applications, les lignes:
Dim w As Word.Application
Set w = New Word.Application
Remplacent les lignes :
Dim w as Object
Set w = CreateObject("Word.Application")


Autre exemple: Exporter un tableau Excel vers Word.

Public Sub CopiedansWord()

' Création d'une variable de type Application
Dim w As Word.Application
Set w = New Word.Application

' Création d'une variable de type Document
Dim wdoc As Word.Document
Set wdoc = w.Documents.Add

w.Visible = True

'Copie dans Excel
Range("A1:B5").Copy

w.Selection.Paste

wdoc.Tables(1).AutoFitBehavior wdAutoFitWindow

Application.CutCopyMode = False

End Sub


Suivez les aventures des skippers aquitains sur EasyVoile.com
Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]
Jeudi 24 janvier 2019 - Semaine 04 - Saint François de Sales (Demain: Saint Manuel)
Aujourd'hui, c'est l'anniversaire de Daniel Auteuil (1950-69 ans), acteur français, de Nastassja Kinski (1961), actrice et mannequin allemande et de Muriel Moreno (1963), chanteuse française (du groupe Niagara). Autre 24 janvier: 2009 - Tempête Klaus sur le sud-ouest de la France (60% des forêts sont dévastées).
Haut de page Easy-Micro