FAQ VBA

FAQ VBAConsultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 133, dernière mise à jour : 15 juin 2021
Sommaire→Word→Document- Comment ouvrir un document ?
- Peut on récupérer les propriétés du document (auteur, titre) ?
- Peut-on générer les statistiques par le code ?
- Je ne trouve pas la propriété visible d'un document Word 97 ?
- Comment fonctionnent les protections Word ?
- Comment mettre en page le document ?
- Comment insérer une table des matières ?
- Comment créer et mettre en forme un en-tête ?
- Comment ajouter un lien hypertext à mon document ?
- Que représente la collection Sentences ?
4.2.1. Sélection et Range
(8)
- Comment sélectionne-t-on avec VBA Word
- Pourquoi ai-je toujours un texte selectionné ?
- Pourquoi je n'arrive pas à sélectionner le dernier mot de mon paragraphe ?
- Comment faire une recherche avec Range qui modifie le format du mot cherché ?
- Comment faire un remplacement de toutes les occurences d'un mot ?
- Pourquoi travailler avec l'objet Range et l'objet Selection ?
- Comment insérer et modifier une image ?
- Lorsque je change le texte de mon paragraphe la mise en page change ?
4.2.2. Tableau et signets
(6)
- Pourquoi mon signet est il détruit lorsque je modifie son texte ?
- Comment insérer un signet qui ne contient pas de texte ?
- Comment créer et remplir un tableau ?
- Comment gère-t-on la mise en forme d'un tableau ?
- Comment scinder un tableau qui fait plus de 10 lignes en dupliquant les titres ?
- Comment atteindre une plage comprise entre deux signets ?
Trois méthodes sont utilisables Ouvrir un document existant
Set objDoc = Application.Documents.Open("c:\tutoriel\tuto.doc")Ouvrir un nouveau document (basé sur le modèle normal)
Set objDoc = Application.Documents.AddOuvrir un document basé sur un autre modèle
Set objDoc = Application.Documents.Add(Template:="C:\Program Files\Microsoft Office\Templates\Memos\Professional Memo.dot")On peut accéder aux propriétés par la collection BuiltInDocumentProperties de l'objet document
Dim objDoc As Word.Document, msg As String
Set objDoc = Application.Documents.Open("d:\tuto.doc")
msg = "Titre : " & objDoc.BuiltInDocumentProperties(wdPropertyTitle) & vbCrLf
msg = msg & "Auteur : " & objDoc.BuiltInDocumentProperties(wdPropertyAuthor) & vbCrLf
msg = msg & "Commentaire : " & objDoc.BuiltInDocumentProperties(wdPropertyComments) & vbCrLf
MsgBox msgDim objDoc As Word.Document, msg As String
Set objDoc = Application.Documents.Open("d:\tuto.doc")
msg = "Titre : " & objDoc.BuiltInDocumentProperties(wdPropertyTitle) & vbCrLf
msg = msg & "Auteur : " & objDoc.BuiltInDocumentProperties(wdPropertyAuthor) & vbCrLf
msg = msg & "Commentaire : " & objDoc.BuiltInDocumentProperties(wdPropertyComments) & vbCrLf
MsgBox msgOui, il faut par contre demander le calcul pour une statistique
Dim objDoc As Word.Document, msg As String
Set objDoc = Application.Documents.Open("d:\tuto.doc")
MsgBox "Le documents contient " & objDoc.ComputeStatistics(wdStatisticPages) & " pages et " & objDoc.ComputeStatistics(wdStatisticWords) & " mots"Vous pouvez obtenir les statistiques pour
- wdStatisticCharacters : nombre de caractères
- wdStatisticCharactersWithSpaces : nombre de caractères avec les espaces
- wdStatisticLines : nombre de lignes
- wdStatisticPages : nombre de pages
- wdStatisticParagraphs : nombre de paragraphes (retour chariot)
- wdStatisticWords : nombre de mots
C'est normal, elle n'existe pas. Pour gérer un document invisible dans word 97, on utilise :
Set objDoc = GetObject("d:\user\tuto.doc")Elles sont de plusieurs sortes. Mot de passe d'accès
objDoc.Password= "passe"Ce code doit être passé dans la méthode open pour ouvrir le document par le code. Protection spécifique
ActiveDocument.Protect Password:="monpasse", NoReset:=False, Type:=wdAllowOnlyCommentsDans ce cas, seuls les commentaires sont autorisés. Pour ôter la protection, utiliser le type wdNoProtection ou la méthode UnProtect
On utilise pour cela l'objet PageSetup de document. Par exemple
With ActiveDocument.PageSetup
.Orientation = wdOrientLandscape
.FirstPageTray = wdPrinterDefaultBin
.OtherPagesTray = wdPrinterDefaultBin
.SectionStart = wdSectionNewPage
.OddAndEvenPagesHeaderFooter = True
.DifferentFirstPageHeaderFooter = True
.VerticalAlignment = wdAlignVerticalTop
.SuppressEndnotes = False
.MirrorMargins = True
End WithOn utilise la méthode Add de la collection TableOfContents Set objDoc = Application.Documents.Open("D:\tuto.doc")
objDoc.TablesOfContents.Add _
Range:=objDoc.Range(objDoc.Paragraphs(2).Range.Start, objDoc.Paragraphs(2).Range.Start), _
UseHeadingStyles:=True, _
LowerHeadingLevel:=4, _
UpperHeadingLevel:=1Faite très attention à ne pas sélectionner de texte car celui-ci serait écrasé.
Le code suivant crée l'en-tête, centre le texte et le met en gras
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = "En-tête"
With ActiveDocument.StoryRanges(wdPrimaryHeaderStory)
.Bold = True
.ParagraphFormat.Alignment = wdAlignParagraphCenter
End WithOn utlilise la méthode Add de la collection Hyperlinks
Dim objDoc As Document
Set objDoc = Application.Documents.Open("D:\tuto.doc")
objDoc.Hyperlinks.Add objDoc.Paragraphs(1).Range.Words(objDoc.Paragraphs(1).Range.Words.Count), "d:\pilo.doc"Sentences est une collection renvoyant les "phrases" de son conteneur (document, paragraphe ...). Par phrase on entend tout ce qui est compris entre des points et/ou des retours chariots.
Notez que c'est donc différent des lignes word
Dim objDoc As Document, Phrase As Range
Set objDoc = Application.Documents.Open("D:\tuto.doc")
MsgBox objDoc.Sentences.Count & vbCrLf & objDoc.BuiltInDocumentProperties(wdPropertyLines)
For Each Phrase In objDoc.Sentences
Phrase.Select
MsgBox "suite"
Next


