ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 这个代码在2003上运行提示:编译错误、外部名未定义。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-10-23 10:04 | 显示全部楼层 |阅读模式
本帖最后由 13907933959 于 2016-10-24 07:57 编辑

前辈们好!
下面这个代码是提取“附件”中、含有“之”的句子的,可在2003上运行提示:编译错误、外部名未定义。
求前辈们赐教!错在那里?谢谢!
Sub test()
dim Match,N&
with createobject("vbscript.regexp")
  .global=true
  .multiline=true
  .pattern="[\da-zA-Z\u4e00-\u9f5a]*之[\da-zA-Z\u4e00-\u9f5a]*"
  for each match in .execute([a1].value)
    n=n+1
    cells(n,2).value=match.value
  next match
End with
End sub

附件:.rar

4.54 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2016-10-23 17:12 | 显示全部楼层
你这宏是在excel中执行吧。
将全文拷贝到excel的A1单元格内,再执行宏试试。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-24 06:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dafanshu1 发表于 2016-10-23 17:12
你这宏是在excel中执行吧。
将全文拷贝到excel的A1单元格内,再执行宏试试。

前辈们好!
感谢多次出手相助!
我想用在Word文档上,代码要怎样修改?恳请前辈赐教!谢谢!

TA的精华主题

TA的得分主题

发表于 2016-10-24 09:27 | 显示全部楼层
13907933959 发表于 2016-10-24 06:46
前辈们好!
感谢多次出手相助!
我想用在Word文档上,代码要怎样修改?恳请前辈赐教!谢谢!

其实在http://club.excelhome.net/thread-1306497-1-1.html中5楼已给出word版的了,或者你在该word版的代码中,将其中的
Execute(Me.Paragraphs(1).Range.Text)
改成
Execute(ActiveDocument.Range)
试试。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-24 09:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dafanshu1 发表于 2016-10-24 09:27
其实在http://club.excelhome.net/thread-1306497-1-1.html中5楼已给出word版的了,或者你在该word版的代 ...

前辈好!
感谢多次出手相助!
按您所教的可以成功提取到当前文档内,但我是想提取到另一新建Word文档内,可否实现?恳请前辈再详教!谢谢!

TA的精华主题

TA的得分主题

发表于 2016-10-24 11:03 | 显示全部楼层
13907933959 发表于 2016-10-24 09:55
前辈好!
感谢多次出手相助!
按您所教的可以成功提取到当前文档内,但我是想提取到另一新建Word文档内 ...


我对文件操作的VBA了解不多,你试试这样:打开附件,新建文件,然后在新建文件执行下面的宏
Dim Match, N&
    Set File = Documents("C:\附件:.doc")   '写上文件具体路径和文件名
    With CreateObject("vbscript.regexp")
        .Global = True
        .MultiLine = True
        .Pattern = "[\da-zA-Z\u4e00-\u9f5a]*之[\da-zA-Z\u4e00-\u9f5a]*"
        For Each Match In .Execute(File.Range)
            N = N + 1
            Selection.EndKey Unit:=wdStory
            Selection.TypeParagraph
            Selection.Range.Text = Match.Value
        Next Match
    End With

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-24 14:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
dafanshu1 发表于 2016-10-24 11:03
我对文件操作的VBA了解不多,你试试这样:打开附件,新建文件,然后在新建文件执行下面的宏
Dim Match ...

前辈好!
是不是这样?

Sub 提取含_之_的句子到另一新建Word文档()
    Dim Match, N&
    Set File = Documents("C:\Documents and Settings\Administrator\桌面\附件:.doc")  '写上文件具体路径和文件名
    With CreateObject("vbscript.regexp")
        .Global = True
        .MultiLine = True
        .Pattern = "[\da-zA-Z\u4e00-\u9f5a]*之[\da-zA-Z\u4e00-\u9f5a]*"
        For Each Match In .Execute(File.Range)
            N = N + 1
            Selection.EndKey Unit:=wdStory
            Selection.TypeParagraph
            Selection.Range.Text = Match.Value
        Next Match
    End With
End Sub

运行后提示:运行时错误’4160’:文件名无效。
前辈、我是想运行宏后直接就自动新建一Word文档,自动提取到该文档内,可否实现?恳请前辈再详教!谢谢!

TA的精华主题

TA的得分主题

发表于 2016-10-24 14:35 | 显示全部楼层
13907933959 发表于 2016-10-24 14:09
前辈好!
是不是这样?

那就这样吧:
Dim Match, N&
    Set File = ActiveDocument
    Documents.Add
    With CreateObject("vbscript.regexp")
        .Global = True
        .MultiLine = True
        .Pattern = "[\da-zA-Z\u4e00-\u9f5a]*之[\da-zA-Z\u4e00-\u9f5a]*"
        For Each Match In .Execute(File.Range)
            Selection.Range.Text = Match.Value
            Selection.EndKey Unit:=wdStory
            Selection.TypeParagraph
        Next Match
    End With

TA的精华主题

TA的得分主题

发表于 2016-10-24 14:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
13907933959 发表于 2016-10-24 14:09
前辈好!
是不是这样?

简单改了一下》》》》》》
  1. Sub test()
  2.     Dim Match, N&, otext$, rng As Range
  3.     Set rng = ActiveDocument.Content
  4.     With CreateObject("vbscript.regexp")
  5.         .Global = True
  6.         .MultiLine = True
  7.         .Pattern = "[\da-zA-Z\u4e00-\u9f5a]*之[\da-zA-Z\u4e00-\u9f5a]*"
  8.         For Each Match In .Execute(rng)
  9.             N = N + 1
  10.             If N = 1 Then
  11.                 otext = Match
  12.             Else
  13.                 otext = otext & Match & vbCr
  14.             End If
  15.         Next Match
  16.     End With
  17.     Documents.Add
  18.     ActiveDocument.Content = otext
  19. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-10-24 15:05 | 显示全部楼层
高手现身了,楼主有救了……[偷笑]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 17:05 , Processed in 0.029354 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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