ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] WPS文档中的VBA代码可以分步执行,却无法一键运行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-28 11:30 | 显示全部楼层 |阅读模式
在WPS文档中利用VBA代码,倒序查找包含“空压机”的段落并将该段和下一段标红,并复制到新的文档中,可以分步执行却无法一键执行,请大佬帮帮忙看看哪里的问题。


Sub 统计包含空压机的段落()
    Dim oDoc As Document '当前文档
    Dim newDoc As Document '新建的文档
    Dim oPara As Paragraph '当前段落
    Dim i As Long '循环计数器
    Dim rng As Range '范围
   
    ' 设置当前文档
    Set oDoc = ActiveDocument
   
    ' 创建新的WPS文档
    Set newDoc = Documents.Add
   
    ' 从后向前遍历每个段落
    For i = oDoc.Paragraphs.Count To 1 Step -1
        Set oPara = oDoc.Paragraphs(i)
        
        ' 检查段落是否包含关键词"空压机"
        If InStr(oPara.Range.Text, "空压机") > 0 Then
            ' 高亮显示当前段落
            oPara.Range.Font.Color = wdColorRed
            
            ' 如果当前段落不是第一个段落,则高亮显示前一个段落
            If i < oDoc.Paragraphs.Count Then
                oDoc.Paragraphs(i - 1).Range.Font.Color = wdColorRed
            End If
            
            
            ' 复制高亮段落到剪贴板
            
          oDoc.Paragraphs(i - 1).Range.Copy
            newDoc.Paragraphs.Last.Range.Paste
      
            oPara.Range.Copy
            newDoc.Paragraphs.Last.Range.Paste
                        
             ' 在新文档的每一个段落后增加换行
            newDoc.Paragraphs.Last.Range.InsertParagraphAfter
        End If
    Next i
   
    ' 保存新文档到桌面
    Dim desktopPath As String
    desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
    newDoc.SaveAs FileName:=desktopPath & Format(Now, "yyyyMM") & "空压机启停记录.docx", FileFormat:=wdFormatDocumentDefault
   
    ' 关闭新文档
'    newDoc.Close SaveChanges:=False
   
    MsgBox "操作完成,结果已保存到桌面。"
End Sub


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-28 11:32 | 显示全部楼层
老是报错,newDoc.Paragraphs.Last.Range.Paste语句中的PASTE应用于RANGE对象错误

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-28 11:45 | 显示全部楼层
newDoc.Paragraphs.Last.Range.Paste这句报错

TA的精华主题

TA的得分主题

发表于 2024-4-28 13:29 | 显示全部楼层
.copy和.cut后面需要添加延时,用于将数据完整写入到剪贴板中
PS:建议能不使用.copy就不使用
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-12 00:57 , Processed in 0.037306 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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