ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA利用EXCEL表数据生成WORD文书代码优化!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-9-12 11:20 | 显示全部楼层 |阅读模式

前段时间在守柔版主的指点下我在excel表中编写了一段代码如下:

目的:利用当前excel中活动单元格所在行的内容生成固定格式的word文档!

问题:1、目前代码可以使用,但我觉得有点冗长,能不能简化?

2、将excel表中数据写入word时是以回车符为标志,如果文档比较大的话将会很麻烦请问有没有别的解决办法?

Private Sub CommandButton2_Click() Dim appWD As Word.Application, MyDoc As Word.Document, myRange As Word.Range, wd As Word.Application Dim TF As Boolean, I As Byte, myString As String, mc As String Dim ra% On Error Resume Next Set appWD = GetObject(, "Word.Application") ra = ActiveCell.Row mc = Cells(ra, 1) If Err.Number <> 0 Then Err.Clear Set appWD = CreateObject("Word.Application") TF = True End If Set MyDoc = appWD.Documents.Open(Filename:=ThisWorkbook.Path & "\文书\协议书.doc", Visible:=False) With MyDoc For I = 1 To 11 Select Case I Case 1 myString = "" Case 2 myString = "" Case 3 myString = "" Case 4 myString = "" Case 5 myString = "" Case 6 myString = Cells(ra, 2) '名称 Case 7 myString = "" Case 8 myString = "" Case 9 myString = Cells(ra, 1) '代码 Case 10 myString = "" Case 11 myString = Cells(ra, 7) '电话 End Select Set myRange = .Range(.Paragraphs(I).Range.Start, .Paragraphs(I).Range.End - 1) myRange.InsertAfter myString Next .SaveAs ThisWorkbook.Path & "\文书\协议书存档\" & Cells(ra, 1) .Close If TF = True Then appWD.Quit: Set appWD = Nothing End With Set wd = CreateObject("word.application") wd.Visible = True wd.Documents.Open ("\文书\协议书存档\" & mc) End Sub

[em04]

TA的精华主题

TA的得分主题

发表于 2005-9-12 12:01 | 显示全部楼层

select case 语句结构可简化如下:

Select Case I Case 1 To 5, 7, 8, 10 myString = "" Case 6 myString = Cells(ra, 2) Case 9 myString = Cells(ra, 1) Case 11 myString = Cells(ra, 7) End Select

另不再需要释放APPWD对象,直接以此打开APWD.Documents.Open ("\文书\协议书存档\" & mc)

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-12 12:27 | 显示全部楼层
多谢守柔版主,那么第二个问题能解决吗?以其他方法插入内容!

TA的精华主题

TA的得分主题

发表于 2005-9-12 16:47 | 显示全部楼层
以下是引用wangwei在2005-9-12 12:27:49的发言: 多谢守柔版主,那么第二个问题能解决吗?以其他方法插入内容!
你把你的附件传一下,我有时间看一下,很简单的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-13 08:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

上传了文档及excel样表,请指教,无法上传全部原文件请守柔版主谅解!

xQ8lsQLZ.rar (10.58 KB, 下载次数: 108)

TA的精华主题

TA的得分主题

发表于 2005-9-13 09:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请问“Dim appWD As Word.Application”提示:“编译错误:用户类型定义未定义”。我该在那里定义该类型,如何定义呢?是不是类似C里面要包含一个头文件呢?多谢啦!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-13 09:40 | 显示全部楼层

请在excel表中引用MICROSOFT WORD 10.0 OBJECT LIBRARY

VBE/工具/引用:MICROSOFT WORD 10.0 OBJECT LIBRARY(版本不同而异)

声明

Option Explicit

[em32]

TA的精华主题

TA的得分主题

发表于 2005-9-14 11:28 | 显示全部楼层
没想到excel这么强大,看来要向版主多多学习了![em10]

TA的精华主题

TA的得分主题

发表于 2005-9-15 05:34 | 显示全部楼层
以下是引用wangwei在2005-9-13 8:29:43的发言:

上传了文档及excel样表,请指教,无法上传全部原文件请守柔版主谅解!

本来想搁一下的,因为粗粗看了一下,感觉楼主的思路好象与代码做的很不一致!

在你的EXCEL中,我没有看到任何代码!

在你的WORD中,是邮件合并主文档!

我再说一次,请把你的源文档发上来,如果有保密数据的话,请修改,数据不要多,能说明问题就行,也许你的时间很宝贵,我的时间很富裕,我也不能这么做吧.

你的附件应该完全符合能达到或者说明你的问题的代表性文档.

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-16 12:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

对不住守柔版主了!

g5GAWdTb.rar (71.03 KB, 下载次数: 112)

由于我的大意给版主带来麻烦,在这致歉了。

重新上传了附件,但代码有问题麻烦守柔兄了!

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

本版积分规则

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

GMT+8, 2024-11-22 15:36 , Processed in 0.035037 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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