web-dev-qa-db-ja.com

MS Wordに自動改行用の記号を挿入させることはできますか?

MSWordで作成された技術文書にXMLスキーマを含めたい。ページで使用可能な幅よりもはるかに長い行があるため、Wordは自動的に行を分割します。これがどこで起こったのかを読者に明確に伝えたいので、次の行は前の行の続きであることがわかります。自動的に破線の各行末に、たとえば⏎などの記号をWordに自動的に挿入させる方法はありますか?

もちろん手動で行うこともできますが、それはスキーマが変更されるたびに繰り返さなければならない多くの作業であり、エラーが発生しやすくなります。 「印刷されない文字を表示する」モードについては知っていますが、これらの記号をこのセクションにのみ表示し、印刷することもできます。また、「非印刷文字を表示」は、自動ではなく明示的改行を表示します。

これはMSWordで可能ですか、そうでない場合、誰かがそれを達成するための別の自動化された手法を推奨できますか?

4
Pepijn Schmitz

さて、次のVBAを出発点として試すこともできますが、多少の作業が必要になると思います。区切りは常にスペースの後にあると想定しているため(スキーマIMOには不合理ではありません)、行より長いスペースのないテキストがある場合でも、手動で区切りを付ける必要があります。

これにより、最後のスペースが現在のフォントの戻り記号+幅のない改行スペースに置き換えられます。ただし、戻り記号の幅を調整できる限り(これを行うにはさまざまな方法があります)、Wordが引き続き同じ点で、それで十分かもしれません。

Sub markAutoLineBreaks()
' Changes line breaks automatically made by Word
' into "return" charaters, but only where the line
' ends in a " "
' This operates on the text in the current selection
' We use a character style
Const strStyleName As String = "contchar"
Dim r As Word.Range
Dim styContchar As Word.Style

' Add the style if it is not present
On Error Resume Next
Set styContchar = ActiveDocument.Styles.Add(strStyleName, Type:=WdStyleType.wdStyleTypeCharacter)
Err.Clear
On Error GoTo 0
' Set the characteristics of the style. What you need to aim for
' is to adjust the character width so that the text breaks at the
' same point (if possible)
Set styContchar = ActiveDocument.Styles(strStyleName)
With styContchar.Font
  .Size = 8
End With

' Save the selection
Set r = Selection.Range

' remove old line end marks
With Selection.Find
  .ClearFormatting
  .Style = styContchar
  .Replacement.ClearFormatting
  ' Not sure what to use here, but this will have to do
  .Replacement.Style = ActiveDocument.Styles("Default Paragraph Font")
  ' 9166 is the return character. 8204 is a No-width breaking space
  .Text = ChrW(9166) & ChrW(8204)
  .Replacement.Text = " "
  .Forward = True
  .Format = True
  .MatchCase = False
  .MatchWholeWord = False
  .MatchWildcards = False
  .MatchSoundsLike = False
  .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

' Moving down lines is not completely straightforward
' but this seems to work
Selection.Collapse direction:=wdCollapseStart
Do Until Selection.End > r.End
  Selection.Bookmarks("\line").Select
  If Right(Selection, 1) = " " Then
      Selection.SetRange Selection.End - 1, Selection.End
      Selection.Delete
      Selection.Text = ChrW(9166) & ChrW(8204)
      Selection.Style = styContchar
      Selection.Bookmarks("\line").Select
      Selection.Collapse direction:=wdCollapseStart
  End If
  Selection.MoveDown wdLine, 1, False
Loop

' reselect our original selection
r.Select
Set r = Nothing
End Sub
0
user181946

回答済みの質問ではないため、重複としては配置しませんが、ここを参照してください。
Microsoft Wordで行の継続を表示するスタイルを設定することはできますか?

これはあなたを導きます: HTMLを画像に変換する

0
Madball73