1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 代码“paste作用selection对象失败怎么解决”

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-3-28 03:27 | 显示全部楼层 |阅读模式
网上找了段代码,修改了一下,执行把所有答案复制到文件末尾,有时操作能成功,有时提示“paste作用selection对象失败”。

哪位高人帮忙看看什么原因?我用的wps。
代码如下:

Sub 把带【答案】内容的段落复制到文件末尾()
    Dim doc As Document
    Dim para As Paragraph
    Dim lastPara As Paragraph
   
    ' 获取当前活动文档
    Set doc = ActiveDocument
   
    ' 遍历文档中的所有段落
    For Each para In doc.Paragraphs
        ' 检查段落文本是否包含“答案”
        If InStr(1, para.Range.Text, "【答案】", vbTextCompare) > 0 Then
            ' 复制该段落
            para.Range.Copy
            ' 获取文档的最后一个段落
            Set lastPara = doc.Paragraphs(doc.Paragraphs.count)
            ' 将光标移动到最后一个段落的末尾
            lastPara.Range.Collapse Direction:=wdCollapseEnd
            lastPara.Range.Select
            ' 粘贴复制的段落
            Selection.Paste
            ' 在粘贴的段落后面添加一个空段落
            doc.Paragraphs.Add lastPara.Range
        End If
    Next para
End Sub

测试文档.rar

1.02 MB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2025-3-28 11:51 | 显示全部楼层
Sub 把带【答案】内容的段落复制到文件末尾()
    Dim doc As Document
    Dim para As Paragraph
    Dim lastPara As Paragraph
   
    ' 获取当前活动文档
    Set doc = ActiveDocument
    PC = 0: PCount = doc.Paragraphs.Count
   
    ' 遍历文档中的所有段落
    For Each para In doc.Paragraphs
    PC = PC + 1
    If PC > PCount Then Exit For
        ' 检查段落文本是否包含“答案”
        If InStr(1, para.Range.Text, "【答案】", vbTextCompare) > 0 Then
            ' 复制该段落
            para.Range.Copy
            ' 获取文档的最后一个段落
            Set lastPara = doc.Paragraphs(doc.Paragraphs.Count)
            ' 将光标移动到最后一个段落的末尾
            lastPara.Range.Collapse Direction:=wdCollapseEnd
            lastPara.Range.Select
            ' 粘贴复制的段落
            Selection.Paste
            ' 在粘贴的段落后面添加一个空段落
            doc.Paragraphs.Add lastPara.Range
        End If
    Next para
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-3-28 15:51 | 显示全部楼层
这个是老问题了,凡是使用.copy或者.cut方法,都会涉及到写入剪贴板,需要使用延时。延时的长短根据自己的电脑速度来定,一般可以控制在50ms-100ms。

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-3-28 21:08 | 显示全部楼层
batmanbbs 发表于 2025-3-28 15:51
这个是老问题了,凡是使用.copy或者.cut方法,都会涉及到写入剪贴板,需要使用延时。延时的长短根据自己的 ...

谢谢老师,非常感谢!!!!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-4-4 03:40 , Processed in 0.030814 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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