我正在尝试从多个团队使用的Excel模板中自动构建格式化的Word报告。例如,如果我有以下Excel结构:
...... A .... | ..... B .... | .... C ...
1 名称 | 高度 |的重量
2杰森| 74 | 170个
3格雷格| 70 | 160个
4 Sam | 71 | 200
我希望将这些数据和格式化为Word文件,格式如下:
2.1 Jason
身高:74
重量:170
2.2格雷格
身高:70
重量:160
有没有一种快速的方法可以使用VBA并且能够遍历任何特定Excel文件中可能存在的行数? (可能从几个到几百个不等)真正的excel文件包含大约十二列,每个记录(行)需要使用标准模板(字体大小/颜色,缩进,对齐等)拉出和格式化数据。 ..)但我喜欢让提取物工作,我可以稍后使用格式化。
作为参考,我试图研究已知的解决方案,但大多数都集中在命名的书签和相对静态的内容上,而不是通过动态行数进行交互,并为每个行解析相同的数据。
答案 0 :(得分:1)
如果您最终使用VBA,可以从word文档开始使用以下代码。确保在Tools>下签入了Microsoft Excel X.X对象库参考。 VBE中的参考文献。
您知道,将字符串放入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