我如何从多行/列Excel电子表格中生成格式的单词报告



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

...... a .... | ..... b .... | .... c ...
1 名称 |高度 |重量
2 Jason |74 |170
3格雷格|70 |160
4山姆|71 |200

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

2.1 Jason
身高:74
称量:170

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

2.3 sam
身高:71
重量:200

是否有一种快速的方法可以使用VBA进行此操作,并且能够在任何特定的Excel文件中迭代尽可能多的行?(可能从少数到数百个)真实的Excel文件包含大约十几列的列,每个记录(行)需要使用标准模板(字体大小/颜色,凹痕,刻度,对齐等)将数据拉出并格式化。.. ..)但是我很想让提取物上班,稍后我可以使用格式。

供参考,我尝试研究已知的解决方案,但大多数都集中在命名的书签和相对静态的内容上,而不是通过动态数的行和每个数据进行分析。

如果您最终使用VBA,则可以使用以下代码从Word文档开始。确保具有Microsoft Excel X.X对象库的参考,请在工具下> vbe中的引用。

中的参考。

您知道,将字符串纳入字的部分可能会更好。就知识而言,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

最新更新