我正在尝试从多个团队使用的 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/