1

.txtファイルを読み取り、それをコピーして新しいフォントを設定するWord文書に貼り付けるVBA Wordマクロを作成しました。

すべて正常に動作しています!特定の行をフォントで強調表示したいのbold + italicですが、実際の解決策がわかりません。

特定の行が特定の単語で始まる (例: Simulation Nr.xxx)、またはいくつかの単語で始まるが、その後に非常に長い一連の空白が含まれる (例: Turbine)。

どうすれば問題を解決できますか?


Ps: ここでは、.txt ファイルをコピーして Word 文書に貼り付ける作業コードを示します。

Sub ACTUS_Table_Converter()

Dim pName As String
Dim bDoc As Document
Dim AppPath, ThisPath As String
Dim Rng As Range

ThisPath = ActiveDocument.Path
pName = ActiveDocument.Name

With Dialogs(wdDialogFileOpen)
    If .Display Then
        If .Name <> "" Then
            Set bDoc = Documents.Open(.Name)
            AppPath = bDoc.Path
        End If
    Else
        MsgBox "No file selected"
    End If
End With

Call ReplaceAllxSymbolsWithySymbols
Call ChangeFormat

Selection.Copy
Windows(pName).Activate
Selection.Paste
Selection.Collapse
bDoc.Close savechanges:=False

End Sub

Sub ChangeFormat()

Selection.WholeStory
With Selection.Font
    .Name = "Courier New"
    .Size = 6
End With

End Sub

Sub ReplaceAllxSymbolsWithySymbols()

'Call the main "ReplaceAllSymbols" macro (below),
'and tell it which character code  and font to search for, and which to replace with

Call ReplaceAllSymbols(FindChar:=ChrW(-141), FindFont:="(normal text)", _
        ReplaceChar:=ChrW(179), ReplaceFont:="(normal text)")
Call ReplaceAllSymbols(FindChar:=ChrW(-142), FindFont:="(normal text)", _
        ReplaceChar:=ChrW(178), ReplaceFont:="(normal text)")
Call ReplaceAllSymbols(FindChar:=ChrW(-144), FindFont:="(normal text)", _
        ReplaceChar:=ChrW(176), ReplaceFont:="(normal text)")
Call ReplaceAllSymbols(FindChar:="°", FindFont:="(normal text)", _
        ReplaceChar:="", ReplaceFont:="(normal text)")

End Sub

Sub ReplaceAllSymbols(FindChar As String, FindFont As String, _
    ReplaceChar As String, ReplaceFont As String)

Dim FoundFont As String, OriginalRange As Range, strFound As Boolean
Application.ScreenUpdating = False

Set OriginalRange = Selection.Range
'start at beginning of document
ActiveDocument.Range(0, 0).Select

strFound = False
If ReplaceChar = "" Then
With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = FindChar
    .Replacement.Text = ReplaceChar
    .Replacement.Font.Name = "Courier New"
    .Replacement.Font.Size = 6
    .MatchCase = True
End With
If Selection.Find.Execute Then
    Selection.Delete Unit:=wdCharacter, Count:=2
    Selection.TypeText ("°C")
End If
Else
With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = FindChar
    .Replacement.Text = ReplaceChar
    .Replacement.Font.Name = "Courier New"
    .Replacement.Font.Size = 6
    .MatchCase = True
    .Execute Replace:=wdReplaceAll
End With
End If

OriginalRange.Select

Set OriginalRange = Nothing
Application.ScreenUpdating = True

Selection.Collapse

End Sub
4

1 に答える 1

0

次のコードはドキュメント上で実行され、行頭文字を探し、行全体のフォントを太字と斜体にSimulation Nr.置き換えます。

Sub ReplaceLinesStartWith()

Dim startingWord As String
'the string to search for
startingWord = "Simulation Nr."

Dim myRange As range
'Will change selection to the document start
Set myRange = ActiveDocument.range(ActiveDocument.range.Start, ActiveDocument.range.Start)
myRange.Select

While Selection.End < ActiveDocument.range.End
   If Left(Selection.Text, Len(startingWord)) = startingWord Then
        With Selection.Font
            .Bold = True
            .Italic = True
        End With
    End If

    Selection.MoveDown Unit:=wdLine
    Selection.Expand wdLine

Wend

End Sub

検索する文字列をハードコーディングしたことに注意してください。代わりに、関数の引数として設定できます。

于 2013-10-31T12:33:45.587 に答える