ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助][求助]从帖子里复制资料到word整理时发现有大量隐藏文字

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-6-13 19:48 | 显示全部楼层

linqiang0816兄:

你的问题我研究过的。

word中并不是所有的操作都能被录制。所以,你的问题不能直接解决。

如果要编程实现,那么请参考http://club.excelhome.net/viewthread.php?tid=240259&replyID=&skin=0

搜集整理网页参考:http://hi.baidu.com/cuteword/blog/item/6fd377c2fa2eb034e5dd3bb5.html

隐藏的文字或者白色文字的处理比较麻烦的方式(能处理多种形式的隐藏文字)参考:http://hi.baidu.com/cuteword/blog/item/885ab51061eac000213f2eed.html

TA的精华主题

TA的得分主题

发表于 2007-6-13 20:16 | 显示全部楼层

有两种方法可以解决我上面遇到的问题,一是通过循环删除,二是替换,详见以下代码:

Sub delHtext()
'用于删除隐藏文字
    ActiveWindow.View.ShowHiddenText = True    
    Selection.HomeKey Unit:=wdStory 
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^?"
        .Font.Hidden = True
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchWildcards = False
         While .Execute
               Selection.Delete Unit:=wdCharacter, Count:=1
         Wend
    End With
   
End Sub


Sub delhtext2()
   ActiveWindow.View.ShowHiddenText = True  
   Selection.Find.ClearFormatting
   Selection.Find.Replacement.ClearFormatting
   With Selection.Find
        .Text = "^?"
        .Font.Hidden = True
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
       ActiveWindow.View.ShowHiddenText = False
End Sub

[此贴子已经被作者于2007-6-13 22:53:47编辑过]

TA的精华主题

TA的得分主题

发表于 2007-6-13 20:19 | 显示全部楼层
以下是引用cuteword在2007-6-13 19:48:42的发言:

linqiang0816兄:

你的问题我研究过的。

word中并不是所有的操作都能被录制。所以,你的问题不能直接解决。

同意cuteword兄的观点,在word2003中是不能录制所有操作的

但在word2000中查找和替换基本上能录制的。

TA的精华主题

TA的得分主题

发表于 2007-6-13 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

to cuteword 兄:

不好意思,看了你链接的文章,我才意识到我从一开始的就弄错方向了,现在我知道网页中隐藏文字的问题了。非常感谢你。

不过在最后一个连接的文章中:

http://hi.baidu.com/cuteword/blog/item/885ab51061eac000213f2eed.html提到的“受限选换”按钮是在word里面了,我找了一下,没有找到,你可以再具体说明一下吗?

TA的精华主题

TA的得分主题

发表于 2007-6-14 12:52 | 显示全部楼层

cuteword 兄:

又对上面的宏做了改进,将人工换行符替换为回车符的代码也加了进去,这样为后续的排版代理方便,对于下面链接例子中的文档全文,已经可以处理:http://space.univs.cn?5602/action_viewspace_itemid_25993.html

新的代码为:

Sub Macro2()
   Selection.HomeKey Unit:=wdStory
   Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^l"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
    End With
   Selection.Find.Execute Replace:=wdReplaceAll
   ActiveWindow.View.ShowHiddenText = True
   Selection.Find.ClearFormatting
   Selection.Find.Replacement.ClearFormatting
   With Selection.Find
        .Text = "^?"
        .Font.Hidden = True
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.WholeStory
    Selection.Cut
    Selection.PasteAndFormat Type:=wdFormatPlainText
    ActiveWindow.View.ShowHiddenText = False
End Sub

我试了一下可以的,不过另外一个宏(就是循环替换的)在运行的时候会停止在一处,程序跳不过去,word就死了,只能停掉宏,错误提示在“while wend”循环的代码,不知道是为什么,请查看:

Sub delHtext()
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^l"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    ActiveWindow.View.ShowHiddenText = True
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^?"
        .Font.Hidden = True
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        While .Execute
            Selection.Delete Unit:=wdCharacter, Count:=1
         Wend
    End With
    Selection.WholeStory
    Selection.Cut
    Selection.PasteAndFormat Type:=wdFormatPlainText
    ActiveWindow.View.ShowHiddenText = False
End Sub

[此贴子已经被作者于2007-6-14 12:54:26编辑过]

TA的精华主题

TA的得分主题

发表于 2007-6-14 20:38 | 显示全部楼层

略修改了一下

Sub delHtext()
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^l"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    ActiveWindow.View.ShowHiddenText = True
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^?"
        .Font.Hidden = True
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        While .Execute
            Selection.Delete
            Selection.MoveRight
         Wend
    End With
    Selection.WholeStory
    Selection.Cut
    Selection.PasteAndFormat Type:=wdFormatPlainText
    ActiveWindow.View.ShowHiddenText = False
End Sub

TA的精华主题

TA的得分主题

发表于 2007-6-14 21:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

代码改了之后运行成功,谢谢cuteword兄。

先前代码未成功的原因基本上了解了,这样的话,对于网页上使用<span style="display=no">隐藏文字</span>而隐藏的文字,就可以使用以上的两个宏来去除。

这两个宏在速度上,使用循环替换速度上更快,而使用循环删除速度上要慢。宏运行结束后就基本上相当于没有隐藏文字的无格式粘贴,可以在进行其他格式的处理了。

TA的精华主题

TA的得分主题

发表于 2007-6-14 22:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
既然是隐藏文字,为什么不一次查找出来删除呢?

TA的精华主题

TA的得分主题

发表于 2007-6-15 11:29 | 显示全部楼层
宏delHtext就是实现这个功能的自动化的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 00:16 , Processed in 0.036780 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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