ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]为何下面的VBA代码不能完全达到我的要求?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-11-16 15:59 | 显示全部楼层 |阅读模式

Ku74HEt9.rar (33.34 KB, 下载次数: 9)


我本想将文档中的单一文本框即没有和其他文本框或别的对象组合中的内容:

①在前后加标记后提取出来(注意:不只是提取其中的文本,是要提取除文本框线内的全部内容,包括字体、字号、上下标、字符颜色等属性,如有插图也要一起提出来);

②提取后放到该文本框所在段落的那一行;

③提取后删除该单一文本框;

④不要对组合文本框或其他对象起作用(既不提取其中的内容,也不删除它们)

我用下面的代码试了一下,发现下列要解决的问题:

(1)上述①要求达到,但奇怪的是得到多个相同的结果(好像是与文档中文本框数目相同);

(2)提取出来的内容所放置的位置不准,都到了文首;

(3)程序会同时删除组合文本框、艺术字、文本框和WORD中绘制的插图的组合等,但不会删除插入的点阵图(当然我也不希望删除它);

(4)如果将代码中的下面一行删除的话,就不能删除想删除的单一文本框

         i.Delete            '删除文本框

我试过几个条件语句,都未达到目的,请高手指点。谢谢!

Sub GetText()

Dim i As Shape
On Error Resume Next
   With ActiveDocument
      For Each i In .Shapes
         i.TextFrame.TextRange.InsertBefore "(Text"  '前插标记
         i.TextFrame.TextRange.InsertAfter "Text)"   '后插标记
         i.TextFrame.TextRange.Cut    '剪切文本框中内容
         i.Delete            '删除文本框
         Selection.Paste     '粘贴文本框中内容
      Next
    End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-17 11:15 | 显示全部楼层
得到多个相同结果的原因应是For Each i In .Shapes的原因,对每一个i都会Paste一次,但怎样解决这些问题呢?

TA的精华主题

TA的得分主题

发表于 2006-11-17 12:23 | 显示全部楼层

SSQ1109兄。看看下面代码行否?

Sub GetText()

Dim i As Shape
Dim arange As Range

On Error Resume Next
Application.ScreenUpdating = False

   With ActiveDocument
      For Each i In .Shapes
        If i.Type = msoTextBox Then
            i.TextFrame.TextRange.InsertBefore "(Text"  '前插标记
            i.TextFrame.TextRange.InsertAfter "Text)"   '后插标记
            i.TextFrame.TextRange.Cut    '剪切文本框中内容
            Set arange = i.Anchor

            i.Delete            '删除文本框
            arange.Paste     '粘贴文本框中内容
        End If
      Next
    End With
Application.ScreenUpdating = True
End Sub

[此贴子已经被作者于2006-11-17 12:23:58编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-17 14:47 | 显示全部楼层

非常谢谢孔兄!我要好好学习您的限定条件的方法和锁定段落的方法。

第一次测试时我还以为提取后文本所置位置不准,因总是还在文首。后查看附件中的第一个文本框的嵌入方式为“浮于文字上方”,将其改为别的方式后正确。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 04:46 , Processed in 0.040417 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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