J'ai un contrôle de contenu texte riche appelé
Dans mon code, le sous TestContent code>. Exemple:
Runexample code> initialisé la plage de ladite commande de contenu et écrit l'exemple de texte à l'extrémité de la plage en utilisant
addtext code> SUB: P>
Option Explicit
Dim TestContentRange As Word.Range
Sub RunExample()
Set TestContentRange = ActiveDocument.SelectContentControlsByTitle("TestContent")(1).Range
TestContentRange.Text = "!"
AddText "Hello World"
End Sub
Sub AddText(TextBit As String)
Dim SlaveRange As Word.Range
Set SlaveRange = TestContentRange
SlaveRange.Collapse Direction:=wdCollapseEnd
SlaveRange.Text = TextBit
End Sub
3 Réponses :
Ma compréhension de votre question est que vous souhaitez remplacer ou ajouter au texte d'un contrôle de contenu, en fonction du texte existant dans le contrôle.
Pour vérifier si un contrôle de contenu contient toujours son texte de placement comparer simplement la plage de contrôles.Text à sa propriété PlaceholderText. Pour ce faire, votre routine AddTtext doit fonctionner avec la commande de contenu réelle non seulement sa plage. P>
Sub RunExample() AddTextToContentControl ActiveDocument, "Test Content", "Hello World" End Sub Sub AddTextToContentControl(WorkDoc As Document, CCTitle As String, TextToAdd As String) Dim ctrl As ContentControl Set ctrl = GetContentControlByTitle(WorkDoc, CCTitle) If Not ctrl Is Nothing Then If ctrl.Range.Text = ctrl.PlaceholderText Then 'replace the placeholder text ctrl.Range.Text = TextToAdd Else 'add to the existing text ctrl.Range.Text = ctrl.Range.Text & " " & TextToAdd End If End If End Sub Function GetContentControlByTitle(SearchDoc As Document, CCTitle As String) As ContentControl Dim ctrl As ContentControl For Each ctrl In SearchDoc.ContentControls If ctrl.Title = CCTitle Then Set GetContentControlByTitle = ctrl Exit For End If Next End Function
Parce que vous effondrez la gamme, la macro tente d'ajouter votre texte au texte par défaut dans le CC, qui n'est pas possible. Il suffit de sortir cette ligne: puis il fonctionne comme prévu et remplace la valeur par défaut. P> p>
Je voulais mon addtext code> Subroutin pour ajouter des données à la fin de la plage de la commande de contenu, ne le remplace pas.
Mais dans votre question, vous avez proposé de vérifier si le CC était vide d'abord avant d'ajouter du texte. Pourquoi voudriez-vous ajouter du texte au texte de l'espace réservé par défaut?
Je suggère quelque chose qui utilise. :
' This assumes there is at least one CC titled "TestContent" With ActiveDocument.SelectContentControlsByTitle("TestContent")(1) If .ShowingPlaceholderText Then .Range.Text = "Hello World" Else .Range.InsertAfter "Hello World" End If End With