用Word宏及VS.Net制作计量证书报告

利用Word的成熟技术制作规范文档已广泛应用于社会各个领域,下面浅谈运用Word及其自带的VBA技术和宏技术,结合Visual Studio2008.Net编程技巧和局域网数据库,首先制作好规范的证书模板,然后通过客户机应用程序自动、高效、规范地生成计量证书报告的一些技术经验总结。
一、 通过编程打开和关闭Word文档
为了能快速、方便、规范地生成符合要求的证书报告,可用Word先做好各类器具的检定证书、校准证书或测试报告的证书模板后,放在局域网服务器的共享文件夹里,由客户机程序根据某一检定/校准、检测事件自动将该模板复制生成某一证书文档并起名保存,然后打开该证书Word文档,并将记录在数据库里的该事件相关信息自动填写至证书文件里。VS.Net代码如下:
      Dim wdapp As Word.Application
      Dim mobjDoc As Word.Document
      wdapp = CreateObject("Word.Application")
      mobjDoc = wdapp.Documents.Open( “证书目录” & “证书文档”)'打开word证书文档
      wdapp.Application.Visible = True  'word 证书文档可视
      wdapp.Application.Quit()          '关闭已打开的word文档
      mobjDoc = Nothing                  '释放资源
      wdapp = Nothing
      GC.Collect()                      '真正释放word进程
二、利用窗体域自动填写信息
    在证书模板中使用文字型窗体域,设置好它的属性后,就可利用VS.Net程序自动将相关的检测信息填入证书中。点击Word“视图”菜单中的“工具栏”子菜单里的“窗体”,就会出现“窗体工具条”,即可在当前证书模板文档中合适位置插入文字型窗体域,它的属性设置很简单。VS程序可根据文字型窗体域属性里的“书签”,将信息自动填入窗体域。例如在证书文档中已有一个书签为“检定结论”的文字型窗体域,以下是利用VS.Net打开文档后填写信息的代码:
          With mobjDoc      'mobjDoc 即是前面例子中定义的Word.Document
              Try
                  .FormFields(“检定结论”).Result = “符合2.0级”    '填写信息
                  ……                    '依次填写其它文字性窗体域内容信息
            Catch ex As Exception
              MsgBox(ex.Message, MsgBoxStyle.Critical)  '如果出错则显示出错信息并退出
              Exit Sub           
            Finally
            End Try
      End With
三、Word的VBA和宏技术的运用
    VBA即Visual Basic for Applications,与Office办公软件的“宏”技术结合,可以将建立Word文档的大量重复性劳动简化,由应用程序通过集成于Office办公软件中的VBA快速自动地完成工作任务。在Word“工具”菜单“宏”子菜单可以录制宏和执行宏,利用“宏”子菜单中的“Visual Basic 编辑器”可以查看录制的宏的VBA代码,这些代码也可复制到VS.Net中运用。以下是一个VS.Net例子,可在生成证书报告时自动载入图片:
    wdapp.Selection.InlineShapes.AddPicture(FileName:="图片.jpg", LinkToFile:=False, SaveWithDocument:=True)        '载入图片,wdapp 即 Word.Application
                                wdapp.ActiveDocument.InlineShapes(wdapp.ActiveDocument.InlineShapes.Count).ConvertTo Shape()  '图片由嵌入型改为浮于文字之上
wdapp.ActiveDocument.Shapes(wdapp.ActiveDocument.Shapes.Count).PictureFormat.TransparentBackground = Microsoft.Office.Core.MsoTriState.msoTrue
          wdapp.ActiveDocument.Shapes(wdapp.ActiveDocument.Shapes.Count).PictureFormat.Transpare
            ncyColor = RGB(255, 255, 255)  '设置图片背景为透明,透明色为(255,255,255)
      wdapp.ActiveDocument.Shapes(wdapp.ActiveDocument.Shapes.Count).Fill.Visible
= Microsoft.Office.Core.MsoTriState.msoFalse
wdapp.ActiveDocument.Shapes(wdapp.ActiveDocument.Shapes.Count).Top = 0  '设置图片位置
      wdapp.ActiveDocument.Shapes(wdapp.ActiveDocument.Shapes.Count).Left = 100
     
wdapp.ActiveDocument.Shapes(wdapp.ActiveDocument.Shapes.Count).IncrementTop(wdapp.Cent
imetersToPoints(-0.25))      '图片位置上下移动
wdapp.ActiveDocument.Shapes(wdapp.ActiveDocument.Shapes.Count).AlternativeText
= "图片注解"               
四、Word证书报告的加密
    生成的证书文档和证书模板出于安全需要可能要加密。人工方法是点击“文件”菜单里的“另存为”命令,出现对话框后在右上角“工具”下拉按钮里点击“安全措施”命令,然后输入密码即可。但是对于大批量的证书报告及制作证书模板,我们可以用第3节介绍的方法先录制宏,然后查看该宏的VBA代码,将代码拷贝到VS.Net里使用即可。以下是VS.Net代码:
            With wdapp.ActiveDocument  'wdapp 即前面定义的 Word.Application
                    .ReadOnlyRecommended = False
                    .Password = "密码123"                '设置打开文档的密码
                    .WritePassword = "密码123"            '设置修改文档的密码
                    .RemovePersonalInformation = False
                    .RemoveDateAndTime = False
            End With
        wdapp.ActiveDocument.Save()                '保存文档
'用密码打开文档的代码如下
    wdapp.Documents.Open(FileName:="证书文件.doc", ConfirmConversions:=False, ReadOnly:= False, AddToRecentFiles:=False, PasswordDocument:="打开文档的密码", PasswordTemplate:= "", Revert:=False, WritePasswordDocument:="修改文档的密码", WritePasswordTemplate:="",XMLTransform:="")                                                           
五、结束语
    新一代Office办公软件和新一代编程软件VS2008.Net集成了许多功能更强大的新技术,掌握和用好它们可使我们的计量工作质量更好更规范,工作效率更高。上文讨论的技术已集成在我单位自行研发的计量信息管理方案中,与Office2003及以上版本套装在一起使用,对我单位的计量工作也起到了良好作用。

你可能感兴趣的:(用Word宏及VS.Net制作计量证书报告)