J'ai un problème lorsqu'il y a des espaces aléatoires dans un document Word qui n'ont pas la même police de format et j'essaie de trouver un moyen de changer la police à la police qui l'entoure.Mise à jour de la correspondance de type de police Word vb
J'ai trouvé quelques VB que je l'ai testé qui sélectionne le texte et le remplace par du texte en couleur:
Sub ChangeFont()
With ActiveDocument.Content.Find
.ClearFormatting
.Text = " "
Dim fontName As String
fontName = "Calibri"
With .Replacement
.ClearFormatting
.Font.Name = fontName
End With
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub
Maintenant, je suis en train de trouver un moyen de au lieu de remplacer le texte de la police et la couleur, obtenir la police du caractère avant et appliquer la police qui existe sur ce personnage. Y at-il un moyen d'obtenir la valeur d'index et juste tirer le nom de la police dans la commande de remplacement? Y a-t-il un moyen plus facile de faire cela? Idéalement, je voudrais faire cela en PowerShell mais le code ci-dessus fonctionne en VB mais quand j'ai essayé de l'adapter, j'ai clairement foiré quelque chose alors j'essaie juste de faire du code fonctionnel avant de l'adapter. .. C'est le powershell j'ai essayé de construire:
$app = New-Object -ComObject Word.application
$app.Visible = $True
$doc = $app.Documents.Open($FileName,$null) #Open FileName, ConfirmConversions , ReadOnly -1 = MSOTrue
$Content = $doc.Content.Find
$Content.ClearFormatting
$Content.Text = " "
$Content.Replacement.ClearFormatting
$Content.Replacement.Text = "TEST"
$Content.Replacement.Font.Name = "Georgia"
$Content.Forward = -1 #true
$Content.Wrap = 1 #wdFindContinue
$Content.Format = -1
$Content.MatchCase = 0 #false
$Content.MatchWholeWord = 0
$Content.MatchWildcards = 0
$Content.MatchSoundsLike = 0
$Content.MatchAllWordForms = 0
$Content.Execute.Replace("2") #wdReplaceAll
$doc.Close() | out-null
$app.Quit() | out-null
Je suppose que vous avez une mauvaise étiquette. VB.NET n'est pas VBA – Plutonix
Yup, faute de frappe. Je préfère faire ça en PowerShell de toute façon mais j'essaie juste de comprendre comment le faire en premier – Jewtus