vba编程操作word表格

  很多人都知道,用vb操作excel的表格非常简单,但是偏偏项目中碰到了VB操作word表格的部分,google、baidu搜爆了,都没有找到我需要的东西。到是搜索到了很多问这个问题的记录。没办法,索性只有自己去尝试了。下面把一些代码发上来,给需要的朋友一点提示。
  打开一个已经存在的wrod文件(这个文件包含了表格)
+展开
-VBScript
Dim WordApp
Dim Word
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set Word = WordApp.Documents.Open("c:\record.dot")

  知道了就很简单了,下面是选定某一个表格的一个单元格,并修改其内容
+展开
-VBScript
Word.Tables(1).cell(1, 2)="内容"

  VBA中的这些数组元素下标都是从1开始的,比如excel的第一行一列也是ExSheet.Cells(1,1),而不是ExSheet.Cells(0,0),WORD的表格也是这样,不信自己试一下就知道了。所以上面那句话的意思就是对整个word文档中的第一个表格的第一行第二列的内容改变为“内容”。很简单吧?网上有些人在问是不是
Word.Tables(1).cell(1, 2).range.text或者Word.Tables(1).cell(1, 2).text。试一下就发现这2种都不对。
  插入图片其实也很简单,代码如下:
+展开
-VBScript
Word.Tables(1).cell(1, 3).Range.InlineShapes.AddPicture ("c:\photo.jpg")


  说到这,肯定又有人会问怎么在一个word里插入一个表格。其实很简单:
+展开
-VBScript
Call word.Tables.Add(wdBook.application.Selection.Range, 16, 5, 1, 0)  


  如果你的程序里涉及到合并及拆分单元格,那么你可能试一下这段代码:
+展开
-VBScript

dim Table
set Table = wdApp.ActiveDocument.Tables.Add(wdApp.Application.Selection.Range, NumRows:=27, NumColumns _
:=7, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed)

Set mySelection = wdApp.Documents.Application.Selection
mySelection.Cells.Borders(-7).LineStyle = 1
'选中表格的第2行第3列
table.Cell(2, 3).Select
'向下移动6格,第1个参数和第3个是常数
Call wdBook.Application.Selection.MoveDown(5, 6, 1)
'合并
wdBook.Application.Selection.Cells.Merge
'拆分成7行2列
Call wdBook.Application.Selection.Cells.Split(7, 2, True)  


  如果大家碰到了更复杂的程序,用程序生成起来比较麻烦,那么你就可以用模板来实现了?你可以先用word做一个模板,把表格什么的全都先写好,然后保存成模板文件。然后你再用程序加载这个模板,然后往模板里填写数据。这样难度要低一些。不过具体情况具体分析。word这些集合的下标都是从1开始,然后只要找到表格那个集合,然后选取第一个表格就是要操作的表格了(假设你想操作的表格是模板中的第一个表格)。 代码如下:

+展开
-VBScript
dim table

set table=wdApp.ActiveDocument.Tables(1)


  总之微软的那一套东西集成得很不错,其之间任意调用非常方便,大家如果想用VB对WORD做更多的应用,却又不知道怎么实现,我想最好的办法就是录制宏了,你把你想完成的功能操作一遍,然后查看宏,一目了然了吧?呵呵。。。.不过宏代码和真正VB的代码是有点差别的,需要转换一下,多用几次就清楚了。(完)
来源:http://lewclear97.blog.163.com/blog/static/10786380200801242040843/

加支付宝好友偷能量挖...


评论(0)网络
阅读(631)喜欢(1)Asp/VBScript