+ -
当前位置:首页 → 问答吧 → 强烈请求帮助解决WORD组织机构图的数据核对难题

强烈请求帮助解决WORD组织机构图的数据核对难题

时间:2011-01-14

来源:互联网

每年都要编制组织机构图,编制画图本来就很麻烦,加上数据核对,因WORD统计计数没有EXCEL方便,经常是算来算去的,常常出错,这种表要做N个,很着急上火。编写WORD程序本人不太会,以前还在本论坛和高手探讨过,恳请帮助编写核对程序。
要求:每个组织框内最上面有两个合计数,下面有代数的文本框,要求核对下面的和上面的的数,有九个文本框要核对,结果要和全部人数一致。见图有颜色标出。
附文件:

[ 本帖最后由 weiguoyin868 于 2011-1-14 07:18 编辑 ]

附件

未命名1.JPG(54.52 KB)

2011-1-14 07:15

组织机构图核对.rar(11.62 KB)

2011-1-14 07:15, 下载次数: 5

作者: weiguoyin868   发布时间: 2011-01-14

不会复杂的编程。提供一个笨方法:
在EXCEL表中设置好每个单位的职能、岗位、实际用工人数及长期在工人数,用粘贴链接的方法,分单位、岗位等粘贴到WORD文本中为无格式文本,当单位的职能、岗位、实际用工人数及长期在工人数有变化时,直接在EXCEL表中修改,打开WORD文档时,出现“该文档包含引用其他文件的链接,确定要用链接文件中的数据更新文档吗?”的提示,点“是”。

作者: fengbin7506   发布时间: 2011-01-14

以下代码是在以前写过的代码(http://club.excelhome.net/viewthread.php?tid=631787)基础上修改而成,可试试:
复制内容到剪贴板
代码:
Sub test()
    '只针对画布中的组合图形对象
    Dim S As Shape, S2 As Shape
    For Each S In ActiveDocument.Shapes
        If S.Type = msoCanvas Then
            For Each S2 In S.CanvasItems
                If S2.Type = msoGroup Then MsgBox myGroupItems(S2)
            Next
        End If
    Next
End Sub

Function myGroupItems(myShape As Shape) As String
    '假设组合图形中第一个文字框包含合计数
    Dim S As Shape, n As Integer, t As String, t2 As String
    For Each S In myShape.GroupItems
        S.Select
        With S.TextFrame
            If .HasText Then
                n = n + 1
                If n = 1 Then
                    t = GetFind(.TextRange)
                Else
                    t2 = GetFind(.TextRange)
                    If t2 <> "0|0" Then Exit For
                End If
            End If
        End With
    Next
    myGroupItems = IIf(t = t2, "数据对应! " & t, "数据不对应! " & vbCrLf & vbCrLf & t & vbTab & t2)
End Function
Function GetFind(myRange As Range) As String
    Dim n As Integer, n2 As Integer
    With myRange.Find
        .Text = "[0-9]@[ (]@[0-9]@)"
        .MatchWildcards = True
        Do While .Execute
            n = n + Val(Split(.Parent.Text, "(")(0))
            n2 = n2 + Val(Split(.Parent.Text, "(")(1))
            .Parent.Collapse wdCollapseEnd
        Loop
    End With
    GetFind = n & "|" & n2
End Function
[ 本帖最后由 sylun 于 2011-1-14 12:47 编辑 ]

作者: sylun   发布时间: 2011-01-14

用域引用 也是可以的。ref

作者: wudixin96   发布时间: 2011-01-14

热门下载

更多