ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2620|回复: 6

[求助] 如何从源文档中查找所有特征字符,并灵活地复制段落到指定的另一个文档的特定位置

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-2-22 10:25 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ETAlien 于 2013-2-22 10:53 编辑

源文档 及 需生成文档 如附件所示。本人接触过excel的vba,首次使用word的代码,请各位高人指点!本人思路如下:
第一步:需从源文档的所有测试框里面检测“【】”符号并且前三个字是“共用段”,符合要求才进入第二步;
第二步:从源文档复制含有“【】”的自然段的内容(不包含【】内的内容),并获取括号内的特征数字,如“5.2.1”。
(第三步的前提:需生成文档的表格已经如附件所示设置好,就是“主要问题”一列原来是空的。)
第三步:在需生成文档中定位待复制的位置(1、定位到指定表格,列:“主要问题”,行:与特征数字一样的行,如“5.2.1”)。
第四步:将复制的内容拷贝到第三步定位的地方。

源文档及需生成文档.rar

20.68 KB, 下载次数: 17

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-25 15:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ETAlien 于 2013-2-26 16:27 编辑

为各位查看方面,特截图。内容与附件一样。请直接看下层楼

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-25 15:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
为了更加好地理解目的,请参考图片所示的解释。

按序号复制示意图

按序号复制示意图

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-26 15:38 | 显示全部楼层
在网上找到一些参考,将目前的进度贴上,希望各位高手指点:
Sub exe()
    Application.ScreenUpdating = False
        With ActiveDocument.Content.Find
            .Text = "】*^13" '查找“】”符号到“段落标记”之间的字符
            .MatchWildcards = True '允许查找通配符
            Do While .Execute '查找到特征字符时,复制段落
                With .Parent
                    .SetRange .Start + 1, .End
                    .Select
                End With
                Selection.Copy
               
                '请在此添加代码:1、找到同文件夹下的“生成文档”;2、在生成文档中找到指定位置;3、黏贴
           '另外,该段代码只能找到第一个符合特征的字段,求解中。
            Loop
        End With
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-26 17:19 | 显示全部楼层
Sub exe()
    Dim s1 As String
    Dim s2 As String
    Application.ScreenUpdating = False
        With ActiveDocument.Content.Find
            .Text = "】*^13"
            .MatchWildcards = True
            Do While .Execute
                With .Parent
                    .SetRange .Start + 1, .End
                    .Select
                End With
                s2 = Selection
               
                '储存特征数字
                With ActiveDocument.Content.Find
                    .Text = "【*】"
                    .MatchWildcards = True
                    Do While .Execute
                        With .Parent
                            .SetRange .Start + 1, .End - 1
                            .Select
                        End With
                        s1 = Selection '存储特征数字于s1变量,
                    Loop
                End With
               
                     Windows("需生成文档 [兼容模式]").Activate '集合所要求的成员不存在
                With ActiveDocument.Content.Find
                    .Text = s1
                    .MatchWildcards = True '允许查找通配符
                End With
               
                Selection.MoveDown Unit:=wdLine, Count:=1 '右移一位,并粘贴内容
                Selection.PasteAndFormat (wdPasteDefault)
               
                Windows("源文档 [兼容模式]").Activate
            Loop
        End With
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-26 17:24 | 显示全部楼层
目前测试进度如上楼代码,代码显性出现的问题:
1、需激活第二个文档(需生成文档)时,出现错误:集合所要求的成员不存在,后续语句无法调试。
2、解决1问题后,该段代码是否能将源文档所有【】特征的文字按要求黏贴到第二个文档?根据之前的测试,未能检测到第二个【】特征字段。
坐等高手指点!

TA的精华主题

TA的得分主题

发表于 2017-11-21 13:31 | 显示全部楼层
我也有相同的问题,同时请教
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-12 13:23 , Processed in 0.025497 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表