摘要:在测绘工程中制作点之记是每个项目中必不可少的内容之一。点之记制作过程当中,内业生产比较繁琐的两个内容一是制表格、二是将现场采集的照片需要逐个插入表格当中。目前大家经常使用的方法是先制作好一个word表格模板,然后将模板通过多次的复制粘贴到一个统一Word文档中再进行编辑,然后在将采集的现场照片插入到表格当中。本文主要通过使用Visual Basic的编程功能更好的解决同时制作多个表格,并能批量对文档进行照片插入和文字编辑。
关键字:Word文档 Visual Basic 表格制作 照片批量插入 批量修改文字
1.点之记的制作要求
点之记通常是以表格的形式呈现,内容主要包含点名、相邻点、交通路线、所在地、标识类型、选点人、制作人、检查人、制作日期、现场照片等内用。
2.利用Visual Basic制作点之记的思路
首先需要了解需要制作工程点之记的总数量和起始点的名称,知道总的数量后再利用Visual Basic程序功能,调用Word制表函数按照总的点之记数量来制作符合生产Word表格,制作表格同时按照工程设定的控制点数量,将首个控制点的点名输入到对话框中,程序根据首个点名和点的数量自动将各自的点名和相邻点添加到表格中。生成表格的同时也可以将制表时间、制表人、检查人、标识类型等批量生成到表格中。
照片的插入是内业工作量较大的工作,需要外业作业人员在照片采集时,将照片命名为与点之记统一的名称,方便后期软件自动读入、插入到对应的表格中。
软件的设计整体思路包含制作表格、添加文本、修改文本、添加照片等功能,主界面如图1。
.png)
3.批量生成表格
表格生成部分主要代码如下:
Dim n As Integer Dim C As Integer Dim DTbl
C = Text11.Text
For n = 0 To C - 1 Step 1 '插入N个表格
oWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
oWord.Selection.Font.Name = "Times New Roman"
oWord.Selection.Font.Size = 26
oWord.Selection.Font.Bold = wdToggle
oWord.Selection.TypeText Text:="GPS点之记"
oWord.Selection.EndKey Unit:=wdStory
oWord.Selection.Font.Size = 12
oWord.Selection.Font.Bold = wdToggle
Call oWord.ActiveDocument.Tables.Add(oWord.Application.Selection.Range, 13, 6, 1, 0)
With oWord.Selection.Tables(1)
If .Style <> "网格型" Then
.Style = "网格型"
End If
生成表格后通过对表格合并制作出想的表格格式,是表格更加的合理和美观。
4.批量插入照片
通过程序调用Word内部函数,利用先前修改好名称的照片批量的将照片导入到Word中。主要代码如下。
Set WordApp = CreateObject("Word.Application")
Set Word = WordApp.Documents.Open(Text5.Text
If Word.Tables.Count > 0 Then '判断word中是否有表格
For i = 1 To Word.Tables.Count '判断word中有多少个表
DM1 = Word.Tables(i).Cell(1, 2)
DM = Mid(DM1, 1, 4)
If Len(Dir(Text6.Text & "\" & DM & "(1).JPG")) > 0 Then
Word.Tables(i).Cell(12, 1).Range.InlineShapes.AddPicture (Text6.Text & "\" & DM & "(1).JPG")
ElseIf Len(Dir(Text6.Text & "\" & DM & " (1).JPG")) > 0 Then Word.Tables(i).Cell(12,1).Range.InlineShapes.AddPicture (Text6.Text & "\" & DM & " (1)" & ".JPG")
ElseIf Len(Dir(Text6.Text & "\" & DM & "(1).JPG")) > 0 Then
Word.Tables(i).Cell(12, 1).Range.InlineShapes.AddPicture (Text6.Text & "\" & DM & "(1)" & ".JPG")
End If
5.添加、修改修改文本内容
文本的添加可以先前设定收入,也可以根据后期需要再批量修改统一内容。主要程序代码如下。
If Check1.Value = 1 Then
Word.Tables(i).Cell(3, 2) = Text1.Text
End If
If Check2.Value = 1 Then
Word.Tables(i).Cell(14, 2) = Text2.Text
End If
6.结论
Visual Basic调用Word内部函数制作表格,可以代替人工逐个复制拷贝、粘贴表格,不仅是减少重复的人工劳动也可以更加精确的使表格保持统一性和准确性;照片的批量插入可以减少人工输入引起的错误,保证点位的照片更加准确的插入到表格的指定位置,同时大大减少了作业员的工作量;批量输入、修改文字功能更解决了生成过程中技术要求不断的变更、不断让其修改内容的便利性。综上所述该程序轻松有趣,用户体验效果是制作点之记的良好选择。
【参考文献】⑴ 闫晶,Visual Basic6.0程序设计,机械工业出版社,2006
⑵ 周凤石,周如意, Office 2010高级应用案例教程,南京大学出版社, 2018
⑶ 李征航,黄劲松, GPS测量与数据处理,武汉大学出版社, 2014