2017-10-13 7 views
0

同じ書式フォントを持たないワードドキュメントにランダムなスペースがあり、それを囲むフォントにフォントを変更する方法を見つけようとしています。フォントタイプの不一致を修正するWord vb

私は、テキストを選択し、色付きのテキストに置き換え、私がテストしたいくつかのVBが見つかりました:

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 

今私が代わりに、フォント、テキストと色を交換する方法を特定しようとしています、その前にある文字のフォントを取得し、その文字に存在するフォントを適用します。インデックス値を取得してフォント名をreplaceコマンドに取り込む方法はありますか?これを行う簡単な方法はありますか?

理想的には、私はpowershellでこれをやってみたいと思いますが、上記のコードはVBで動作しますが、私はそれを適応させようとしたときにはっきりと何かをねじ込みました。

$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 
+0

間違ったタグがあると思われます。 VB.NETはVBA – Plutonix

+0

ではありません。私はむしろこれをpowershellでやってみたいと思いますが、最初にやる方法を理解しようとしています。 – Jewtus

答えて

1

だけで各スペースを見つけ、何を交換し、それはそのフォントの前に文字のことをするフォントの設定する必要はありません..これは私が構築しようとしたPowerShellがあります。

文書の最初のスペースを見つけ、そしてそれは、それは次のスペースを見つけようとする前に、フォントが文字であったものは何でもすることにそのフォントを設定します
$Word = New-Object -ComObject Word.Application 
$Doc = $Word.Documents.Open($FilePath) 
$DocFind = $Doc.Content.Find 
Do{ 
    $DocFind.ClearFormatting() 
    $DocFind.Text = " " 
    $NextSpace = $DocFind.Execute() 

    $DocFind.Parent.Font = $DocFind.Parent.Previous(1,1).Font 

}Until(!$NextSpace) 

。それは別のスペースを見つけることができなくなるまでそれを行います。

+0

完璧!!ありがとう。それははるかに簡単です。 – Jewtus

関連する問題