将数据从Excel移动到Word后,如何控制字体样式?

将数据从Excel移动到Word后,如何控制字体样式?,excel,vba,ms-word,font-face,font-size,Excel,Vba,Ms Word,Font Face,Font Size,我有下面的工作代码。我添加了With语句,但它格式化了页面上的所有文本。 这段代码从excel表格中获取每一行,并提取列标题(问题)及其下方的单元格值(答案) 我的目标是让问题用粗体和一种字体,答案用普通字体和更小的字体。 我尝试将With语句仅围绕页眉代码进行包装,但它仍然会使整个页面风格化 For Each cell In tbl.DataBodyRange.Rows: If cell.EntireRow.Hidden = False Then hiddenCell = cell.

我有下面的工作代码。我添加了With语句,但它格式化了页面上的所有文本。 这段代码从excel表格中获取每一行,并提取列标题(问题)及其下方的单元格值(答案)

我的目标是让问题用粗体和一种字体,答案用普通字体和更小的字体。 我尝试将With语句仅围绕页眉代码进行包装,但它仍然会使整个页面风格化

For Each cell In tbl.DataBodyRange.Rows:

If cell.EntireRow.Hidden = False Then
    hiddenCell = cell.Row
    
    
    For Each Header In tbl.HeaderRowRange:

    With WordDoc
    .Styles(wdStyleHeading1).Font.Name = "Arial"
    .Styles(wdStyleHeading1).Font.Size = 12
    .Styles(wdStyleHeading1).Font.Bold = True
    .Styles(wdStyleHeading1).Font.Color = wdColorBlack
    .Range(0).Style = .Styles(wdStyleHeading1)
    
        headerCol = wks.Cells.Find(Header).Column
        WordDoc.Content.InsertAfter (vbNewLine)
        WordDoc.Content.InsertAfter Range(Header.Address).Value & ": "
        WordDoc.Content.InsertAfter (vbNewLine)
        WordDoc.Content.InsertAfter (Cells(hiddenCell, headerCol).Value)
        'WordDoc.Content.InsertAfter (vbNewLine)
    End With
        
    Next
WordDoc.Sections.Add

首先,您需要将定义标题1从循环中去掉。只需定义一次样式

您还可以在循环中使用标题1样式格式化文档。同样,这不需要重复

您的代码没有对答案应用任何其他样式

我已经重新起草了您的代码,为最后一段设置了文本和样式

  With WordDoc
    With .Styles(wdStyleHeading1).Font
      .name = "Arial"
      .Size = 12
      .Bold = True
      .Color = wdColorBlack
    End With
    .Range(0).style = .Styles(wdStyleHeading1)
  End With

  For Each Cell In tbl.DataBodyRange.Rows:

    If Cell.EntireRow.Hidden = False Then hiddenCell = Cell.Row
    
    For Each Header In tbl.HeaderRowRange:

      With WordDoc
        headerCol = wks.Cells.Find(Header).Column
        
        .Content.InsertAfter (vbNewLine)
        With .Paragraphs.Last.Range
          .Text = Range(Header.Address).Value & ": "
          .style = wdStyleHeading1
        End With
        .Content.InsertAfter (vbNewLine)
        With .Paragraphs.Last.Range
          .Text = Cells(hiddenCell, headerCol).Value
          .style = wdStyleNormal
        End With
      End With
        
    Next Header
    WordDoc.Sections.add
  Next Cell