强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan

【VBA简介】

VBA(Visual  Basic for Applications)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)(Object Linking and Embedding)任务的编程语言。他是一种自动化语言可以使常用的程序自动化。在敲机房收费系统的时候我们就接触过了导出到Excel,在VS引用的时候还看到了PPT,想想微软真是厉害,这次的实战主要是word中的书签和VS的结合,使界面更美了。

【需求】

下图是最终需要做出来的效果。在验收完之后回来的路上,我们猜测既然VS可以和Excel结合,那么应该也可以和Word结合,经过百度证实确实是可以。而且这种技术叫做VBA,自己也借助这次机会初步了解了一下什么是VBA。

【过程】

百度的过程中无意间看到VB应用word的书签。正所谓知识都是相通的嘛,既然VB可以,那么VS有什么理由不可以呢?经过一番尝试,在一个Word中通过VS写入想要的数据成功了。考虑到实际情况就在debug目录下放了一个模板,在打印的时候程序先将模板拷贝到用户选择的地方,然后我们在该路径下的word中写入想要的数据。

【代码】

  Dim wordApp As New Word.Application   '定义一个wordDim wordDoc As New Word.DocumentDim opara1 As Word.Paragraph       '写入word变量Dim opara2 As Word.ParagraphDim opara3 As Word.ParagraphDim opara4 As Word.ParagraphDim TargetFileName As String     '目标文件名Dim spath As StringDim ssource As String         '获取debug的路径,从而可以将该路径下的模板拷贝到桌面Dim se As DialogResultDim strPattern As String = String.Emptyse = Me.FolderBrowserDialog1.ShowDialog()If se = DialogResult.OK Then'获取选中的路径TargetFileName = FolderBrowserDialog1.SelectedPath & "/信息打印.doc"If Microsoft.VisualBasic.Right(Application.StartupPath, 1) <> "/" Thenspath = Application.StartupPath & "/"ssource = spath & "信息打印.doc"If Dir$(TargetFileName) <> "" ThenIf MsgBox("文件已存在,确认替换它!", vbYesNo + vbQuestion) = vbNo Then Exit Sub'判断文件是否已经打开If isopen(TargetFileName) = True ThenMsgBox("路径为:" + TargetFileName + "的文件已打开,请先将其关闭", vbInformation, "提示")Exit SubElseKill(TargetFileName)     '删除文件End IfFileCopy(ssource, TargetFileName)    '复制文件wordDoc = wordApp.Documents.Open(TargetFileName)' 横向wordDoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscapewordApp.Visible = TruewordApp.ShowMe()
                    '其中的company是word中的一个书签,之下的unitID等等类似opara1 = wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("company").Range)opara1.Range.Text = txtCompanyName.Text.Trim()opara2 = wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("unitID").Range)opara2.Range.Text = _userIdopara3 = wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("userName").Range)opara3.Range.Text = txtPersonalName.Text.Trim()opara4 = wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("phone").Range)opara4.Range.Text = txtPhoneNumber.Text.Trim()'wordDoc.Close() '关闭文档实例'wordApp.Quit()wordDoc = NothingwordApp = Nothing'MsgBox("信息表已保存在您选择的路径下!!", vbInformation, "提示")Me.WindowState = System.Windows.Forms.FormWindowState.MinimizedElseFileCopy(ssource, TargetFileName)    '复制文件wordDoc = wordApp.Documents.Open(TargetFileName)' 横向wordDoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscapewordApp.Visible = TruewordApp.ShowMe()'信息写入wrodopara1 = wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("company").Range)opara1.Range.Text = txtCompanyName.Text.Trim()opara2 = wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("unitID").Range)opara2.Range.Text = _userIdopara3 = wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("userName").Range)opara3.Range.Text = txtPersonalName.Text.Trim()opara4 = wordDoc.Content.Paragraphs.Add(wordDoc.Bookmarks.Item("phone").Range)opara4.Range.Text = txtPhoneNumber.Text.Trim()'wordDoc.SaveAs2(TargetFileName)'wordDoc.Close() '关闭文档实例'wordApp.Quit()wordDoc = NothingwordApp = NothingMe.WindowState = System.Windows.Forms.FormWindowState.Minimized' MsgBox("信息表已保存在您选择的路径下!", vbInformation, "提示")End IfEnd IfEnd If

其中我们要求是默认横向打印,万万没想到一行代码就让word信服了。

 ' 横向wordDoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape

期间做测试,由于好奇心就将拷贝到指定路径下的word打开了,边打开着边用VS执行,这样就出错了,因为word已经打开,就相当于一个程序正在调用该进程,用户也是相当的多,猜想应该不会只有我一个人这样做吧。经过测试,证明是文件被打开的原因,那么如何判断该文件已被打开呢?如果已打开,就给出提示。

 Private Function isopen(ByVal path_string As String) As BooleanTryDim fs As New IO.FileStream(path_string, IO.FileMode.OpenOrCreate, IO.FileAccess.Read)fs.Dispose()Return FalseCatch ex As ExceptionReturn TrueEnd TryEnd Function

在需要判断的地方调用即可:

 '判断文件是否已经打开If isopen(TargetFileName) = True ThenMsgBox("路径为:" + TargetFileName + "的文件已打开,请先将其关闭", vbInformation, "提示")Exit SubEnd if

【创建书签】

1.打开word

2.在相应想要从程序中输出值的地方插入书签。

3.第一步

4.第二步

5.第三步

【总结】

VBA的思想就是让简单的东西更加简单了,通过代码将桌面应用程序和我们自己做的程序很好的结合起来,通过单击一个按钮就可以完成在桌面应用程序中的一系列操作。借助已有的东西来让自己的程序更加的方便美观——站在巨人的肩膀上,让自己看的更远。

VBA——word中书签与VS的完美搭配相关推荐

  1. (VBA)Word中对选中的行(代码行)自动编号并修改注释的颜色

    说实话,CSDN的这个插入代码的控件很好用,特别是自动添加行号的功能. 下面这段VBA代码就是在Word中,对你编辑的代码添加行号和对"//"以后的注释部分加上颜色. 用法:选中你 ...

  2. word 文档操作类,可以读出word中书签 批量替换内容,直接调用

    using System; using System.Collections.Generic; using System.Text; using Word = Microsoft.Office.Int ...

  3. VBA word中插入文字和艺术字

    1. 如何插入文字 在当前光标处(活动文档末尾)插入文字 Sub InsertTextAtEndOfDocument()ActiveDocument.Content.InsertAfter Text: ...

  4. .net 根据书签往word中插入数据_word目录制作技巧:快速生成文档总目录和章节下子目录...

    编按:在使用Word制作长文档时,目录必不可少.有了目录,无论是查找内容或阅读内容都会更方便.但很多人却不得其法,始终采用纯手工输入目录.今天,小编将教大家自动生成主目录和子目录的方法,以后再也不用手 ...

  5. 如何用word写书_如何用vba在word中添加打勾的方框?

    最近在做word vba项目,遇到个需求,需要根据条件判断批量输出打√的方框和不打√的方框,类似如下图所示: 本来以为是个很容易的事情,没想到阻碍不小. 首先,我们先看看如何在word文档中手动输入带 ...

  6. 分享个人收集或整理的word中常用的vba代码

    在word中通过VBA编写一些常用的函数,再利用快捷键激发,可以有效的提高写作的效率.以下分享个人通过网络收集,或者改造,或者自己录制后修改的代码,有需要的可以自取. 因为已经记不清有些代码的出处了, ...

  7. 利用VBA在Word中排出漂亮的代码

    引言 在学习编程的过程中,常常会使用word来做笔记,下面我将对如何利用word宏来进行代码的排版进行说明 1.工具 我用的是word2007,word2003和word2010操作也差不多 2.基本 ...

  8. 如何优雅的在 Word 中插入代码,PlanetB 的完美替代方案

    文章目录 问题引入 一.遇到问题 二.解决方案 结语 引用 问题引入 当写实验报告或者其他 Word 文档时,很多时候会插入一小段代码以说明或注释作用,如何让插入的代码更好看呢,当时我选择了 www. ...

  9. 通过VBA将word中的表格导入到excel中

    通过VBA将word中的表格导入到excel中 由于项目需要,需要将word中的表格按照格式导入到excel中,所以通过在word中写VBA程序的方式将word的内容导出到excel中. 1.添加&q ...

最新文章

  1. Flutter Android/iOS包大小分析
  2. 响应式布局这件小事有哪些优点和缺点该怎么设计
  3. JAVA利用google的zxing快速生成QRCode
  4. 深入理解HTTPS及在iOS系统中适配HTTPS类型网络请求(上)
  5. Java基础篇:右移运算符
  6. Linux网络子系统中协议栈的入口处理
  7. Ubuntu14.04 ec20 4G模块 ppp拨号--rt3070 wifi模块释放sofAP
  8. 计算机未显示移动硬盘,电脑不显示移动硬盘怎么办_移动硬盘已连接不显示解决教程...
  9. 中国知名科幻网站列表
  10. ClassNotFound找不到 redis.clients.jedis.JedisShardInfo
  11. jQuery_02 快速入门 $作用和方法
  12. ExecutorCompletionService
  13. 基于python,虹软sdk3.0实现的实时人脸识别
  14. 微服务平台建设之微服务2.0技术选型思考
  15. linux shell 读取文件的三种方式
  16. 英飞凌基础学习笔记(SMU)Safety Management Unit
  17. Win10下Keil5的C51和ARM共存的开发环境配置
  18. java arp 攻击_arp攻击原理与arp欺骗的原理和应用
  19. A+CLUB活动预告 | 2023年5月
  20. 系统架构设计师-软件开发模型(瀑布模型)

热门文章

  1. (C语言)输入n行“*”组成的倒三角形和正三角形
  2. 有哪些每天坚持效果显著的高中学习习惯?
  3. HttpURLConnection的用法
  4. 看到一个想收藏的的AJAX小列子
  5. python中车票的例题_python练习题
  6. 百度松果 小码哥考研小技巧 (概率期望)
  7. 指导软件测试一天200管吃饭两顿,北京来付30车费
  8. jsp+servlet实现注册,登录等的案例
  9. 基于Java的农产品销售管理系统设计与实现
  10. python数学建模导论2.2 常微分方程符号解与数值解的计算(未放入章节为微分方程介绍章节,自行百度)