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

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

…… A …. | ….. B …. | …. C …
1 名称 | 高度 | 重量
2 Jason | 74 | 170
3 Greg | 70 | 160
4 Sam | 71 | 200

我想用下面的格式将这些数据和格式转换成一个Word文件:

2.1 Jason
身高:74
称重:170

2.2 Greg
身高:70
体重:160

2.3山姆
身高:71
重量:200

有没有一种快速的方法来做到这一点与VBA,并能够遍历任何特定的Excel文件中可能存在的行数? (可以从几个到几百不等)真正的excel文件包含大约十几列,其中每个logging(行)的数据需要被拉出,并使用标准模板(字体大小/颜色,缩进,alignment等格式化。 ..),但我很想得到提取工作,我可以玩格式化以后。

作为参考,我试图研究已知的解决scheme,但是大多数都是以命名书签和相对静态的内容为中心,而不是通过dynamic数量的行进行交互并parsing相同的数据。

如果你最终使用VBA,你可以使用从word文档开始的下面的代码。 确保在VBE的“工具”>“引用”下签入了“Microsoft Excel XX对象库参考”。

只要你知道,它把string放入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