Добавление текста между цифрами - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь добавить нижний колонтитул, используя VBA.

Я хочу, чтобы мой нижний колонтитул выглядел так: «Страница 2 из 11».
Я пытался его кодировать, но он продолжает давать мне »Страница 211 "

Есть ли способ добавить" из "без ущерба для текущего кода?

Спасибо!

Sub ExtractContractA1()
    Dim objWord As Object
    Dim objDoc As Object
    Dim objRange As Word.Range
    Dim myTable As Table
    Dim i As Long
    Dim f As Long

    Set objWord = CreateObject("Word.Application")
    'Set objWord = Application
    objWord.Visible = True
    Set objDoc = objWord.Documents.Add()
    objDoc.PageSetup.OddAndEvenPagesHeaderFooter = False

    For i = 1 To objDoc.Sections.Count
        With objDoc.Sections(i)    
            Set objRange = .Headers(WdHeaderFooterIndex.wdHeaderFooterPrimary).Range    
            objRange = "PRIVATE AND CONFIDENTIAL"    
            objRange.Font.Name = "Arial"    
            objRange.Font.Size = 11    
            objRange.Font.Bold = vbTrue    
            objRange.ParagraphFormat.Alignment = wdAlignParagraphCenter   
            Set objRange = Nothing

            For f = wdHeaderFooterPrimary To wdHeaderFooterFirstPage    
                Set objRange = .Footers(f).Range
                With objRange    
                    .ParagraphFormat.Alignment = wdAlignParagraphRight

                    With .Font   
                        .Name = "Arial" 
                        .Size = 9
                        .Bold = vbFalse
                    End With

                    .Text = "Contract"   
                    .Collapse wdCollapseEnd
                End With

                Set objRange = .Footers(f).Range.Paragraphs(1).Range
                With objRange
                    .Paragraphs.Add
                    .Collapse wdCollapseEnd
                    Set myTable = .Tables.Add(objRange, 2, 1)
                End With
                With myTable
                    .Cell(1, 1).Range.Text = "Employee"
                    .Cell(2, 1).Range.Text = " " & Chr(11) & " "
                    .Rows.SetLeftIndent LeftIndent:=395, RulerStyle:=wdAdjustFirstColumn
                    .Borders.InsideLineStyle = wdLineStyleSingle
                    .Borders.OutsideLineStyle = wdLineStyleSingle
                End With

                VersionText = ActiveSheet.Range("$G$2")

                Set objRange = .Footers(f).Range.Paragraphs(6).Range
                With objRange
                    .Paragraphs.Add
                    .ParagraphFormat.Alignment = wdAlignParagraphRight

                    With .Font
                        .Name = "Arial"
                        .Size = 9
                        .Bold = vbFalse
                    End With

                   .Text = VersionText & Chr(11) & Chr(11) & "Page "
                   .Collapse wdCollapseEnd
                   .Fields.Add Range:=objRange, _
                               Type:=wdFieldEmpty, _
                               Text:="NUMPAGES \of", _
                               PreserveFormatting:=True
                   .Text = " of "
                   .Fields.Add Range:=objRange, _
                               Type:=wdFieldEmpty, _
                               Text:="PAGE  \* Arabic ", _
                               PreserveFormatting:=True
                End With
            Next f
        End With
    Next i
End sub

1 Ответ

0 голосов
/ 21 января 2019

В NUMPAGES \of "\ of" не является допустимым переключателем. Слово, кажется, игнорирует это. Что вы хотите сделать, это что-то вроде {PAGE * \ Arabic} из {NUMPAGES * \ Arabic}, где "of" находится между двумя полями.

Приведенный ниже код будет примерно реализовывать вышеуказанную идею. Пожалуйста, адаптируйте его для использования в вашем проекте.

Sub AddFields()

    Dim Rng As Range

    Set Rng = Selection.Range
    Rng.Collapse wdCollapseEnd
    ActiveDocument.Fields.Add Range:=Rng, _
                              Type:=wdFieldEmpty, _
                              Text:="PAGE  \* Arabic ", _
                              PreserveFormatting:=True
    Set Rng = Rng.Paragraphs(1).Range
    Rng.Collapse wdCollapseEnd
    Rng.InsertAfter " of "
    Rng.Collapse wdCollapseEnd
    ActiveDocument.Fields.Add Range:=Rng, _
                              Type:=wdFieldEmpty, _
                              Text:="NUMPAGES  \* Arabic ", _
                              PreserveFormatting:=True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...