excel - 如何从多行/列 Excel 电子表格生成格式化的 Word 报告

标签 excel vba ms-word auto-generate word-template

我正在尝试从多个团队使用的 Excel 模板自动构建格式化的 Word 报告。例如,如果我有以下 Excel 结构:

......A.... |.....B.... |....C...
1 名称 | 高度 | 重量
2 贾森 | 74 | 74 170
3 格雷格 | 70 | 70 160
4 萨姆 | 71 | 71 200

我想将该数据和格式提取到具有以下格式的 Word 文件中:

2.1 杰森
高度:74
体重:170

2.2 格雷格
高度:70
重量:160

2.3 山姆
高度:71
重量:200

有没有一种快速的方法可以使用 VBA 来实现这一点,并且能够迭代任何特定 Excel 文件中可能存在的尽可能多的行? (可能从几个到数百个不等)真正的 Excel 文件包含大约十几列,其中每条记录(行)都需要使用标准模板(字体大小/颜色、缩进、对齐等)提取数据并进行格式化。 ..)但我很想让摘录发挥作用,并且稍后可以使用格式。

作为引用,我尝试研究已知的解决方案,但大多数都集中在命名书签和相对静态的内容上,而不是通过动态行数进行交互并为每行解析相同的数据。

最佳答案

如果您最终使用 VBA,您可以从 Word 文档开始使用以下代码。确保在 VBE 中的“工具”>“引用”下 checkin 了“Microsoft Excel X.X 对象库的引用”。

正如您所知,将字符串放入 Word 的部分可能可以写得更好。就知识而言,Word 是所有 MS Office 产品中我最薄弱的。

Sub XLtoWord()

Dim xlApp As Excel.Application
'Set xlApp = CreateObject("Excel.Application")
Set xlApp = GetObject(, "Excel.Application") '-> assumes XL is open, if not use CreateObject

Dim wkb As Excel.Workbook
Set wkb = xlApp.Workbooks("Book5.xlsm") '-> assumes xl is open, if not use .Workbooks.Open(filename)

Dim wks As Excel.Worksheet
Set wks = wkb.Sheets(1) '-> assumes data is in sheet 1

With wks

    Dim lngRow As Long
    lngRow = .Range("A" & .Rows.Count).End(xlUp).Row

    Dim cel As Excel.Range
    Dim i As Integer

    i = 1

    For Each cel In .Range("A2:A" & lngRow) 'assumes data is filled from top left cell of A1 including headers

        strLabel = "2." & i & " " & cel.Text
        strHeight = "Height " & cel.Offset(, 1).Text
        strWeight = "Weight " & cel.Offset(, 2).Text

        Dim myDoc As Word.Document
        Set myDoc = ThisDocument

        myDoc.Range.InsertParagraphAfter
        myDoc.Range.InsertAfter strLabel & Chr(11) & strHeight & Chr(11) & strWeight

        i = i + 1

    Next

End With


End Sub

关于excel - 如何从多行/列 Excel 电子表格生成格式化的 Word 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018627/

相关文章:

vba - 在 VBA 中以编程方式创建文档并为其分配数据

excel - 如何使用数据模型遍历筛选项并隐藏 Excel 数据透视表中的项?

vba - 如何在Excel VBA中为图表选择多个范围?

vba - 如何以 PDF 格式输出报告,其中名称由字段中的值组成?

vba - 让我开始编程和调试 Microsoft Office 自动化

excel - 如何在 Excel 中创建 "lock"(停止更新单元格)?

c# - 在 C#.NET 中将 Excel 导入数据库

excel - VBA 中的加权 Damerau-Levenshtein

css - 将 HTML 文档与不同的字符集结合起来

c# - 通过 .NET 自动化在 Word 文档中搜索和替换