excel - 从 Excel 文档在 Word 中自动创建表格

标签 excel vba ms-word

我在 Excel 中有一组数据,如下所示(CSV 格式)

heading1, heading2, heading3, index
A , randomdata1, randomdata2, 1
A , randomdata1, randomdata2, 2
A , randomdata1, randomdata2, 3
B , randomdata1, randomdata2, 4
C , randomdata1, randomdata2, 5

我希望能够自动构建一个 Word 文档来呈现这些数据,其中的信息按标题 1 分组,放入单独的表中。所以word文档就像

Table A
heading1, heading2, heading3, index
A , randomdata1, randomdata2, 1
A , randomdata1, randomdata2, 2
A , randomdata1, randomdata2, 3

Table B 
heading1, heading2, heading3, index
B , randomdata1, randomdata2, 4

Table C 
heading1, heading2, heading3, index
C , randomdata1, randomdata2, 5

请有人帮我解决这个问题,因为这将节省大约 20 个小时非常无聊的复制、粘贴和格式化!

感谢您的帮助

最佳答案

多丽,

希望这能及时提供帮助。

为此,您需要设置对 Word 的引用 - 在 VBA 编辑器中选择“工具”>“引用”并向下滚动到 Microsoft Word ##,其中 ## 对于 Excel '07 为 12.0,对于 Excel '03 为 11.0,等等.此外,运行此命令时不应过滤工作表,尽管您不需要按标题 1 排序,但我假设您已经这样做了。

代码假定您的列表以单元格 A1 中的标题开始。如果这不是真的,你应该这样做。它还假定 D 中的最后一列。您可以在以“.Copy”开头的行末尾调整该值。

Sub CopyExcelDataToWord()

Dim wsSource As Excel.Worksheet
Dim cell As Excel.Range
Dim collUniqueHeadings As Collection
Dim lngLastRow As Long
Dim i As Long
Dim appWord As Word.Application
Dim docWordTarget As Word.Document

Set wsSource = ThisWorkbook.Worksheets(1)
With wsSource
    lngLastRow = .Range("A" & Rows.Count).End(xlUp).Row
    Set collUniqueHeadings = New Collection
    For Each cell In .Range("A2:A" & lngLastRow)
        On Error Resume Next
        collUniqueHeadings.Add Item:=cell.Value, Key:=cell.Value
        On Error GoTo 0
    Next cell
End With
Set appWord = CreateObject("Word.Application")
With appWord
    .Visible = True
    Set docWordTarget = .Documents.Add
    .ActiveDocument.Select
End With
For i = 1 To collUniqueHeadings.Count
    With wsSource
        .Range("A1").AutoFilter Field:=1, Criteria1:=collUniqueHeadings(i)
        .Range("A1:D" & lngLastRow).Copy
    End With
    With appWord.Selection
        .PasteExcelTable linkedtoexcel:=False, wordformatting:=True, RTF:=False
        .TypeParagraph
    End With
Next i

For i = 1 To collUniqueHeadings.Count
    collUniqueHeadings.Remove 1
Next i
Set docWordTarget = Nothing
Set appWord = Nothing

End Sub

关于excel - 从 Excel 文档在 Word 中自动创建表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3387849/

相关文章:

java - Java POI可以将图像写入word文档吗?

c# - 将 excel 图表导出为图像

sql - 如何从SQL中选择给定时间间隔之间的数据

vba - Excel VBA 合并重复行并添加数量

string - EXCEL VBA : extracting 8 digits sequence from a string in cell

vba - 在一个子程序中设置变量并在另一个子程序中使用

VBA字: Remove SHIFT-ENTER lines

c# - 无法找到或打开 PDB 文件,正在调试 native 代码

c# - 从 Excel 导入数据 - .列名称中的(点)

php - 无法在 PHP 中使用 COM 打开 Word 文档