2010-01-07 2 views
1

Nous utilisons l'objet VB6 et Word.Basic pour créer des documents. Le texte est inséré dans une variété de signets. Notre dernière exigence nous demande d'augmenter la taille de la police pour un insert donné. Nous le faisons actuellement en réglant la taille de la police à 12 au lieu de 8 normalement, mais du point de vue de la maintenance, je préférerais pouvoir définir ceci (currentfontsize + 4) ... mais jusqu'à présent j'ai pas été en mesure de trouver une méthode pour obtenir la taille de police actuelle.Comment puis-je trouver la taille de police actuelle au signet?

Est-ce que quelqu'un a un moyen de le faire?

+0

impressionnant, je l'apprécie vraiment. – RiddlerDev

Répondre

2

Réglage de la taille de la police d'un signet est straight-forward dans VBA:

Dim doc As Document 

Const MultiSelection As Long = 9999999 

Set doc = Application.ActiveDocument 

If doc.Bookmarks.Exists("myBookmark") Then 
    If doc.Bookmarks("myBookmark").Range.Font.Size = MultiSelection Then 
     ' the range of the bookmark consists of runs with different font sizes 
     doc.Bookmarks("myBookmark").Range.Font.Size = 12 
    Else 
     doc.Bookmarks("myBookmark").Range.Font.Size _ 
      = doc.Bookmarks("myBookmark").Range.Font.Size + 4 
    End If 
End If 

probablement une meilleure option si vous voulez augmenter la taille de police proportionnelle, est d'utiliser Font.Grow ce qui augmentera la taille de police la prochaine taille disponible, par exemple Pour obtenir de 8 à 12, il faudrait l'appeler 4 fois.

If doc.Bookmarks.Exists("myBookmark") Then 
    For i = 1 To 4 
     doc.Bookmarks("myBookmark").Range.Font.Grow 
    Next 
End If 

Si vous n'êtes pas familier avec le modèle objet de Word, une astuce consiste à utiliser l'enregistreur de macros. Dans votre cas, démarrez l'enregistreur, ouvrez la boîte de dialogue des signets, accédez au signet, puis modifiez la taille de la police. Les actions enregistrées seront enregistrées en tant que module dans votre fichier Normal.dot par défaut. L'action de changer la taille de la police d'un signet se traduirait par la macro enregistrée suivante:

Selection.GoTo What:=wdGoToBookmark, Name:="myBookmark" 
With ActiveDocument.Bookmarks 
    .DefaultSorting = wdSortByName 
    .ShowHidden = False 
End With 
Selection.Font.Size = 12 

Ce code peut être la base de votre propre fonction (bien qu'il semble un peu différent de l'exemple ci-dessus, l'effet être le même).

+0

Je sais comment le définir, cherchait la taille. Mais basé sur l'autre réponse ... puis-je modifier le vôtre à: doc.Bookmarks ("myBookmark"). Range.Font.Size = doc.Bookmarks ("myBookmark"). Range.Font.Size + 4? (Ou est-il en lecture seule?) – RiddlerDev

+0

Oui, cela fonctionne aussi, mais seulement si le signet actuel n'utilise pas des tailles de police différentes. Si c'est le cas, vous obtiendrez une valeur indéfinie (9999999) à partir de 'range.Font.Size'. –

+0

parfait merci! – RiddlerDev

0

fonction d'un objet Range, vous pouvez vérifier range.Font.Size.

Questions connexes