ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 依据条件插入相应名称的文档,代码是成功了,请问有没有更简单的写法呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-12-6 09:55 | 显示全部楼层 |阅读模式
因为日常工作是做估价报告,估价报告由不同的文档组合而成的,我想让它自动化生成,写了以下的代码,大概意思是:

当表4中的文字是什么内容的时候,插入同名称的文档。

代码如下:(是不是可以遍历所有文档,然后选出和表格内容一样名字的文档的写法啊?)

Sub yinyong()

Dim doc As Document
Dim worDoc As Object
Dim tx



tx = ActiveDocument.Tables(4).Cell(2, 1).Range.Text
tv = ActiveDocument.Tables(4).Cell(3, 1).Range.Text

bx = "成本逼近法" & vbCr & Chr(7)
cx = "假设开发法" & vbCr & Chr(7)
dx = "基准地价系数修正法" & vbCr & Chr(7)
ex = "收益还原法" & vbCr & Chr(7)

If bx = tx Then
    Documents.Open ActiveDocument.Path & "\" & "成本逼近法.docx"
ActiveDocument.Content.Select
Selection.Copy
ActiveDocument.Close
Documents("估价报告.docm").Activate
ActiveDocument.Bookmarks("估价方法开始").Select
Selection.Move Unit:=wdLine, Count:=1
    Selection.Paste

ElseIf cx = tx Then
    Documents.Open ActiveDocument.Path & "\" & "假设开发法.docx"
ActiveDocument.Content.Select
Selection.Copy
ActiveDocument.Close
Documents("估价报告.docm").Activate
ActiveDocument.Bookmarks("估价方法开始").Select
Selection.Move Unit:=wdLine, Count:=1
    Selection.Paste

ElseIf dx = tx Then
    Documents.Open ActiveDocument.Path & "\" & "基准地价系数修正法.docx"
ActiveDocument.Content.Select
Selection.Copy
ActiveDocument.Close
Documents("估价报告.docm").Activate
ActiveDocument.Bookmarks("估价方法开始").Select
Selection.Move Unit:=wdLine, Count:=1
    Selection.Paste

Else
ex = tx
    Documents.Open ActiveDocument.Path & "\" & "收益还原法.docx"
ActiveDocument.Content.Select
Selection.Copy
ActiveDocument.Close
Documents("估价报告.docm").Activate
ActiveDocument.Bookmarks("估价方法开始").Select
Selection.Move Unit:=wdLine, Count:=1
    Selection.Paste
End If

End Sub

TA的精华主题

TA的得分主题

发表于 2020-12-6 22:34 | 显示全部楼层
楼主 最好上附件,说明之。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-7 09:31 | 显示全部楼层
413191246se 发表于 2020-12-6 22:34
楼主 最好上附件,说明之。

好的,附件如下:

估价报告自动生成组稿.zip

176.39 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2020-12-7 22:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢 楼主!——表4 是不是——(二)估计方法  下面的这个表格?里面的单元格文本可以取得,但是相应文档插入到哪里呢?是右面的单元格吗?装不下啊!——楼主 应该用 红色 标明想要处理的文字或想要达成的效果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-8 10:21 | 显示全部楼层
413191246se 发表于 2020-12-7 22:30
谢谢 楼主!——表4 是不是——(二)估计方法  下面的这个表格?里面的单元格文本可以取得,但是相应文档 ...

首先表达感激之情!
表4是那个表格,插入的位置,我设置了2个书签,就在表格下面。

TA的精华主题

TA的得分主题

发表于 2020-12-8 16:44 | 显示全部楼层
Sub yinyong3()
    Dim doc As Document, d1 As Document, d2 As Document
    Dim tx, tv
    Set doc = ThisDocument
    tx = doc.Tables(4).Cell(2, 1).Range.Text
    tv = doc.Tables(4).Cell(3, 1).Range.Text
    tx = VBA.Left(tx, Len(tx) - 2)
    tv = VBA.Left(tv, Len(tv) - 2)
    tx = doc.Path & "\" & tx & ".docx"
    tv = doc.Path & "\" & tv & ".docx"
    If Dir(tx) <> "" Then
        Set d1 = Documents.Open(tx)
        d1.Content.Copy
        d1.Close
        doc.Activate
        doc.Bookmarks("估价方法开始").Select
        Selection.Move Unit:=wdLine, Count:=1
        Selection.Paste
    End If
    If Dir(tv) <> "" Then
        Set d2 = Documents.Open(tv)
        d2.Content.Copy
        d2.Close
        doc.Bookmarks("估价方法开始").Select
        Selection.Move Unit:=wdLine, Count:=1
        Selection.Paste
    End If
End Sub
不知道我是否理解的正确。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-27 19:50 , Processed in 0.040431 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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