|
* 楼主,你好!——我边想算法边写代码,觉得问题不大。但是,我觉得你给的资料不是最真实的资料(当然不必给人员真实姓名;另外,“户主”是不是必须在每户的最上边一行呢?你给的资料不是这样),但表格得是真实表格。有限于此,我也不再编码,先停工,看看你是否再给更真实的表格,再继续编。
* 还有,我编码、算法思路也比较慢,因为水平低嘛,所以,如果 楼主 觉得太慢,可以等待本坛高手、大神;如果不在乎时间,可以等待,就等我的代码。
* 下面是试用代码:(代码注释部分请认真关注一下!)
- Sub 户编码()
- '请将 Excel 表格复制到新建 Word 文档中,并保存为同一文件夹下的 Word 文档,文件名为“户编码”
- '请将 Word 文档“表一”改名为“调查表”,并同时打开“调查表”和“户编码”两个 Word 文档
- Dim dcb As Document, hbm As Document
- Dim m&, i&
- Set dcb = Documents("调查表.docx")
- Set hbm = Documents("户编码.docx")
- '户编码--数据整理
- hbm.Activate
- If ActiveDocument.Tables.Count <> 1 Then MsgBox "户编码文档仅允许有一个表格!", 0 + 16: End
- ActiveDocument.Tables(1).Rows(1).Delete
- i = 1
- With ActiveDocument
- Do
- With .Tables(i)
- Do
- m = m + 1
- .Cell(m, 1).Select
- If m = Selection.Tables(1).Range.Information(wdMaximumNumberOfRows) Then GoTo sk
- If .Cell(m + 1, 1).Range.Text = .Cell(m, 1).Range.Text Then
- Else
- .Cell(m + 1, 1).Select
- Selection.SplitTable
- Exit Do
- End If
- Loop
- i = i + 1
- m = 0
- End With
- Loop
- End With
- sk:
- End Sub
- Sub 调查表()
- '主文档----整理
- ' dcb.Activate
- ' MsgBox ActiveDocument.Tables.Count
- Dim s&
- Dim j&
- Dim k&
- s = Documents("户编码").Tables(1).Rows.Count
-
- ' MsgBox "拆分次数 s=" & s
- With ActiveDocument.Tables(1).Range
- .Cells(2).Select
- Selection.SplitTable
- End With
-
- j = 1
- Do
- j = j + 1
- With ActiveDocument.Tables(j).Range
- .Cells(32).Select
- Selection.SplitTable
- End With
- Loop Until j = s + 1
-
- '循环赋值
- j = 1
- Do
- j = j + 1
- k = k + 1
- ActiveDocument.Tables(j).Range.Cells(3).Range.Text = Documents("户编码").Tables(1).Cell(k, 2).Range.Text
- ActiveDocument.Tables(j).Range.Cells(5).Range.Text = Documents("户编码").Tables(1).Cell(k, 3).Range.Text
-
- Loop Until j = s
- End Sub
复制代码 |
|