设为首页收藏本站Access中国
Office中国(www.office-cn.net),专业Office论坛

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

返回列表 发新帖
查看: 266|回复: 2

[与其它组件] 从“善假于物”谈起——浅谈Access在Word中的综合应用

[复制链接]
发表于 2019-10-12 02:23:59 | 显示全部楼层 |阅读模式
有时候,一些不太熟悉我的版友会觉得,“哇,你的Access怎么学得这么好?在哪里学的?学了多久?有什么推荐的书或者网站视频吗?”
对于他们连珠炮似的发问,有时候我真不知道该怎么回答,姑且闲扯一下吧:
1、事实上,我可能算是滥竽充数的版主了吧。个人觉得,Access学得并不算很好,大概够用的样子。
2、至于在哪里学?我当时是在市面上买了一本书,照着章节做了一遍。然后一些不懂的东西就在论坛上提问。
3、学了多久?一开始我是学了三个月,感觉有些飘飘然了,这窗体什么的,也不难啊。。。然后开发系统的时候,才发现,数据库理论不太熟,建表,写查询,建窗体,发现缺少一些字段,修改表结构,修改查询,又建窗体,发现还有功能无法实现,继续修改表,修改查询……最后不得不推翻重来。真正开始做系统,差不多半年吧。如果只是学着做一些小工具来改善工作效率(例如,几乎都是外部数据的情况下),那么,大约三个月就够了。如果开发系统,悟性高的话,也许三个月也够了。我算是比较驽钝的了。
4、推荐的书。大多数人会推荐《Access 2013宝典》(反正我没认真看过,章节倒是比较详细。)。我的建议是,如果只是开发一些小工具改善工作效率的,随便在市面上买一本就够了。如果需要开发软件的话,那么还是用那本“宝典”吧。至于网站视频,我没有什么推荐的,进阶的阶段,可以看看本站的视频。而网站则推荐本站。各种解决问题的应用示例,还有我以前写的“新手入门”系列扫盲贴,也许对新手有所裨益。

要学好一样东西,都是需要花时间的,还需要自己去寻找一切的学习机会,进行大量的练习。这没什么捷径的。如果只是一次两次需求,当下伸手党倒也无妨。但如果经常需要它来改善工作的话,我觉得还是花点时间吧。天分只是决定你的下限,努力才是决定你的上限的。

我说过,我的Access学得并不太好,但通常并不会影响我帮大家解决问题。这是为什么呢?因为我“善假于物”啊。就拿前段时间一件事来说吧:

前段时间,有人在QQ群问起,如何以Excel作为数据源,用邮件合并的方式,将文件名,图片插入到word当中。效果大体如下:


当时也思考过这个问题,邮件合并大概也不算太复杂,但看了他给的模板,最后有个表格需要填入汇总数据
邮件合并时插入图片,处理起来并不算一件容易的事情,另外汇总数据更加麻烦(后面如果有时间,在不添加汇总表的情况下,我再试试)。
所以,只能考虑用VBA来实现了。

现在问题是,我对于Word对象的各种属性方法很陌生。咋办?去找demo,帮助文件等等啊。简单点的话,我们可以用word录制宏去把一些对象方法属性提出来,不是么?

还是老规矩,先上代码:
  1. Sub wirteWordData()
  2. '新建文件系统对象
  3.     Dim fso As New FileSystemObject
  4. '根目录
  5.     Dim objRoot As Folder
  6. '子文件夹
  7.     Dim objSubFold As Folder
  8. '子文件夹内的文件
  9.     Dim objFile As File
  10. '这里不用New,目的在于后续方便关闭或者退出
  11.     Dim objWord As Word.Application
  12. 'Word文档
  13.     Dim objDoc As Word.Document
  14. '选区
  15.     Dim objSelection As Word.Selection
  16. '序号
  17.     Dim i As Long


  18. '根目录
  19.     Set objRoot = fso.GetFolder(CurrentProject.Path)
  20. '子文件夹
  21.     For Each objSubFold In objRoot.SubFolders
  22. '子文件夹中所有文件
  23.         i = 1
  24.         Set objWord = New Word.Application
  25. '创建一个Word文档
  26.         Set objDoc = objWord.Documents.Add
  27. '遍历子文件夹下的文件
  28.         For Each objFile In objSubFold.Files
  29. '从第一行开始插入数据,依次插入序号,段落,图片名称,图片
  30.             With objDoc.ActiveWindow.Selection
  31.                 .TypeText i
  32.                 .TypeParagraph
  33.                 .TypeText objFile.Name
  34.                 .TypeParagraph
  35.                 .InlineShapes.AddPicture objSubFold.Path & "" & objFile.Name
  36.             End With
  37.             i = i + 1
  38.         Next
  39. '插入汇总表格,调整为默认格式(忽略倒数第二个参数则边框线不可见)。
  40.         objDoc.Tables.Add objDoc.ActiveWindow.Selection.Range, 2, 2, wdWord9TableBehavior, wdAutoFitContent
  41.         objDoc.Tables(1).Select
  42. '设置段落居中
  43.         Set objSelection = objDoc.ActiveWindow.Selection
  44.         With objSelection
  45.             .ParagraphFormat.Alignment = wdAlignParagraphCenter
  46.         End With
  47. '选择左上角单元格
  48.         objDoc.Tables(1).cell(1, 1).Select
  49.         Set objSelection = objDoc.ActiveWindow.Selection
  50.         With objSelection
  51. '依次向右移动光标填入数据。
  52.             .TypeText "设计师"
  53.             .MoveRight wdCharacter, 1
  54.             .TypeText "违规个数"
  55.             .MoveRight wdCharacter, 1
  56.             .MoveRight wdCharacter, 1
  57.             .TypeText objSubFold.ShortName
  58.             .MoveRight wdCharacter, 1
  59.             .TypeText i
  60.         End With
  61. '保存Word文件并退出Word程序,以便下一个子文件夹重新操作
  62.         objDoc.SaveAs2 CurrentProject.Path & "" & objSubFold.ShortName & ".docx"
  63.         objDoc.Close
  64.         objWord.Quit
  65.     Next
  66. '完成后弹出提示。
  67.     MsgBox "done"
  68. End Sub
复制代码

由于注释已经很清楚了,所以这里就不再详细说明实现的思想过程了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

发表于 2019-10-18 10:28:28 | 显示全部楼层
赞一个!
回复

使用道具 举报

点击这里给我发消息

发表于 2019-10-24 16:14:45 | 显示全部楼层
谢谢!受教!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /6 下一条

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2019-12-14 15:32 , Processed in 0.092856 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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