Не удается заставить WholeStory выделить и отформатировать весь текст в Word Doc, используя Excel VBA - PullRequest
0 голосов
/ 13 октября 2018

Мне нужно иметь возможность создавать отчет (в Word), который использует кучу данных, которые хранятся в Excel.У меня возникают проблемы, когда я пытаюсь отформатировать весь документ Word (заголовок отчета И все, что я скопировал из Excel) так, чтобы все было с одинарным интервалом и без абзацев до или после.Команда "WholeStory" / выбор не работает.Заранее спасибо за помощь !!!

Sub Generate_Report()
    Dim appWD As Word.Application 
    Set appWD = CreateObject("Word.Application")
    appWD.Visible = True
    appWD.Documents.Add

  <<Sub where I move/arrange data from a bunch of sheets to Sheets("Template")>>

    Sheets("Template").UsedRange.Copy
    With appWD.Selection
        .Font.Size = 14
        .Font.Name = "Calibri Light (Headings)"
        .Font.Bold = True
        .Font.Underline = wdUnderlineSingle
        .ParagraphFormat.Alignment = wdAlignParagraphCenter
        .TypeText ("NAME OF REPORT TITLE") & vbNewLine & vbNewLine
        .Paste
    End With
    With appWD.WholeStory.ParagraphFormat
        .SpaceBefore = 0
        .SpaceAfter = 0
        .LineSpacingRule = wdLineSpaceSingle
    End With
    Sheets("Template").Cells.ClearContents
End Sub

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Все, что вам нужно между 'Sheets ("Template"). UsedRange.Copy "и" Sheets ("Template"). Cells.ClearContents ":

With appWD.ActiveDocument.Range
    .Font.Size = 14
    .Font.Name = "Calibri Light (Headings)"
    .Font.Bold = True
    .Font.Underline = wdUnderlineSingle
    .TypeText ("NAME OF REPORT TITLE") & vbNewLine & vbNewLine
    .Characters.Last.Paste
    With .ParagraphFormat
        .Alignment = wdAlignParagraphCenter
        .SpaceBefore = 0
        .SpaceAfter = 0
        .LineSpacingRule = wdLineSpaceSingle
    End With
End With
0 голосов
/ 13 октября 2018

Попробуйте после 1-го конца с

appWD.Selection.WholeStory
With appWD.Selection.ParagraphFormat
    .SpaceBefore = 0
    .SpaceAfter = 0
    .LineSpacingRule = wdLineSpaceDouble
End With
...