随笔-1  评论-44  文章-3  trackbacks-0
         很多人都知道,用vb操作excel的表格非常简单,但是偏偏项目中碰到了VB操作word表格的部分,google、baidu搜爆了,都没有找到我需要的东西。到是搜索到了很多问这个问题的记录。没办法,索性只有自己去尝试了。下面把一些代码发上来,给需要的朋友一点提示
         打开一个已经存在的wrod文件(这个文件包含了表格)
Dim WordApp
Dim Word
Set WordApp = CreateObject("Word.Application")
WordApp.Visible 
= True
Set Word = WordApp.Documents.Open("c:\record.dot")
         知道了就很简单了,下面是选定某一个表格的一个单元格,并修改其内容
Word.Tables(1).cell(12)="内容"
         VBA中的这些数组元素下标都是从1开始的,比如excel的第一行一列也是ExSheet.Cells(1,1),而不是ExSheet.Cells(0,0),WORD的表格也是这样,不信自己试一下就知道了。所以上面那句话的意思就是对整个word文档中的第一个表格的第一行第二列的内容改变为“内容”。很简单吧?网上有些人在问是不是
Word.Tables(1).cell(12
).range.text或者Word.Tables(1).cell(12).text。试一下就发现这2种都不对
         插入图片其实也很简单,代码如下:

Word.Tables(1).cell(13).Range.InlineShapes.AddPicture ("c:\photo.jpg")
         微软的那一套东西集成得很不错,其之间任意调用非常方便,大家如果想用VB对WORD做更多的应用,却又不知道怎么实现,我想最好的办法就是录制宏了,你把你想完成的功能操作一遍,然后查看宏,一目了然了吧?呵呵。。。(完)
posted on 2006-08-14 17:20 黑旋风 阅读(27282) 评论(37)  编辑  收藏

评论:
# re: VB程序操作word表格(文字、图片) 2006-08-15 18:17 | 风谷路人
不错哦~我问过这个问题的:)  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-08-18 12:38 | 风谷路人
Dim WordApp
Dim Word
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set Word = WordApp.Documents.Open("c:\record.doc")

这样是打开一个已经存在的.doc文件。如果想新建一个.doc文件喃?  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-08-23 10:33 | jxally
高手你好!我在vb中调用word打印报表,代码是在word中录制的宏拷贝过来的,但是在生成表格时编译通不过,代码如下:

Dim wdApp As Word.Application
Dim wdBook As Word.Document
Dim Range As Range
Dim NumRows As Long
Dim NumColumns As Long
Set wdApp = CreateObject("Word.Application")
Set wdBook = wdApp.Documents.Add
wdApp.Visible = True
....
....
--〉wdApp.ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=16, NumColumns _
:=5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitWindow
运行时上面这句报实时错误'91'
对象变量或with块变量未设置
该如何写?请高手指教,非常感谢!  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-08-23 13:44 | 黑旋风
看你的代码是想增加一个表格,VBA的代码和VB的代码是不一样的,需要转换一下,多用几次就清楚了。
应该这样写
Call wdBook.Tables.Add(wdBook.application.Selection.Range, 16, 5, 1, 0)  回复  更多评论
  
# 感谢指教!还有一个问题请教 2006-08-25 10:30 | jxally
谢谢指教,还有一个问题要请教高手。如果我要增加一个复杂的表格,举例说就是在表格中我要合并、拆分一些单元格,还要绘制表头(带斜线的),但是在word中录制宏时无法对表格进行这些操作,我该怎么办?能不能给出一些代码?非常感谢!  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-08-26 11:26 | 黑旋风
接着上次那个程序来。。。
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)  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-08-29 00:22 | 欧洲黑胖子
兄弟我也找了3天啦,终于找到组织了,楼主高,实在是高,继续揣摩并关注此贴中。。。  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-08-29 08:32 | jxally
谢谢!楼主真高,兄弟佩服,非常感谢!我马上去试试。
  回复  更多评论
  
# 非常感谢!还得继续麻烦楼主指教 2006-08-29 09:39 | jxally
楼主你好!我按你的方法去做,但是在执行table.cell(2,3).select时报错,错误为实时错误'424',要求对象,我不知道是不是在table前需要加上wdapp还是wdbook,或者是myselection,不过我都试过了,还是不行,后面的就写不下去了。我主要是想生成一个7列27行的表格,第1列的1、2两行合并为一个单元格,第1列的第5行和第6行合并做一个带斜线的表头,斜线上下要分别输入“压力计”和“测试点”作为表头分类,第4行的第2、3、4列单元格合并为一个单元格,5、6、7列合并为一个单元格,望楼主能详细写一下代码。非常感谢!我的代码如下:
Dim wdApp As Word.Application
Dim wdBook As Word.Document
Set wdApp = CreateObject("Word.Application")
Set wdBook = wdApp.Documents.Add
wdApp.Visible = True

wdApp.Selection.Font.Name = "黑体"
wdApp.Selection.Font.Size = 22
wdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
wdApp.Selection.TypeText Text:="通风机调试报告"
wdApp.Selection.TypeParagraph
wdApp.Selection.TypeParagraph
wdApp.Selection.Font.Name = "仿宋_GB2312"
wdApp.Selection.Font.Size = 12
Call 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)
Set wdBook = Nothing


  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-08-29 15:44 | 黑旋风
不好意思啊,上次在自己机器上测试了一下,没有拷全部代码,不过就这个应该也能理解到呀,table就是要操作的那个table,一个word里面有可能有多个table,我们首先要选中要操作的那个table,我们这个table是自己用代码生成的,所以有一个方便的代码就是
dim Table
set Table = wdApp.ActiveDocument.Tables.Add(wdApp.Application.Selection.Range, NumRows:=27, NumColumns _
:=7, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed)

修改你的程序里面插入table的那句话即可
---------------------------------------------
谢谢关注风之谷,下次多写一些关于这方面的东西,网上这方面的其实东西不少,但是不全,下次整理一下发上来,不过最近怕是没什么时间了,呵呵!
  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-08-29 16:00 | 黑旋风
顺便提一下,像你这样的程序,我个人觉得是否改成模板要方便些呢?你用word做一个模板,把表格什么的全都先写好,然后保存成模板文件。然后你再用程序加载这个模板,然后往模板里填写数据。这样难度要低一些。不过具体情况具体分析。(个人意见)

之前我不是说了如果是自己创建的表格可以很方便的得到表格对象吗?就在创建时直接取得了。其实还有另外一种办法就是:你的其他程序都不变,只把出错的那句话改成:
wdApp.ActiveDocument.Tables(1).Cell(2, 3).Select
就像我开篇说的,word、excel这些集合的下标都是从1开始,然后只要找到表格那个集合,然后选取第一个表格就是要操作的表格了(因为程序只创建了一个表格)。
如果是模板的话,就应该是对已经存在的表格进行操作了,就只有用这中办法弄了。不知道我说清楚没有。
  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-09-08 09:44 | jxally
多谢了!我按照你的建议,已经完全搞定了,还是做成模版调用来得方便,非常感谢你的指点。  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-10-19 15:55 | 廉洁
楼主:

有一个问题请教!

我想通过vb在word里添加多个表格,因为数据的列数较多,希望能

分成多个表格显示数据,方便查看。

部分代码如下:

For I = 1 To INT_COL
Call MyWord.ActiveDocument.Tables.Add(MyWord.Application.Selection.Range, NumRows:=30, _
NumColumns:=8, DefaultTableBehavior:=wdWord9TableBehavior, _
AutoFitBehavior:=wdAutoFitFixed)
With MyWord.Application.Selection.Tables(1)
If .Style <> "网格型" Then
.Style = "网格型"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
End With
MyWord.Application.Selection.MoveDown Unit:=wdLine,Count:=30
MyWord.Application.Selection.TypeParagraph
Next I

但是,每次程序执行到MyWord.Application.Selection.MoveDown Unit:=wdLine,Count:=30这一句,就跳出程序。为什么?

另:您有什么好的建议,处理这种多行多列数据吗?  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-10-19 15:56 | 廉洁
事情有点急,盼望楼主答复  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-10-19 16:57 | 廉洁
程序修改如下,可以出现多个表格,但是在给每一个表格输入数据时,我就不知道怎么处理了,盼回复

For I = 1 To INT_COL
Call MyWord.ActiveDocument.Tables.Add(MyWord.Selection.Range, NumRows:=30, _
NumColumns:=8, DefaultTableBehavior:=wdWord9TableBehavior, _
AutoFitBehavior:=wdAutoFitFixed)
MyWord.Selection.Tables(1).cell(1, 1) = "Year"
Call MyWord.Selection.MoveDown(5, 30)
MyWord.Selection.TypeParagraph
Next I  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-10-22 00:53 | 黑旋风
你的代码基本上都差不多了,我没测试,看样子是你的思路有点问题(循环不对)

你可以先生成1个表格,再处理表格的数据。
也可以把所有表格全部生成,再处理表格数据,
看你的代码,你选择的是第2种,不管是哪种,肯定是多重循环的,你的代码只有1重循环。
思路如下:
for 表格数
生成这个表格,得到表格对象
for 表格的行
for 表格行的单元格
单元格="单元格的内容"
next
next
next
呵呵,不知道说清楚没有  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-10-23 17:44 | 廉洁
谢谢斑竹,搞定!

我的问题并非上述原因,是我没有把光标移出表格。

问题已经解决,谢谢  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-12-15 09:40 | 苏宁
请高手回答一下,怎么用VBA发现WORD中的合并单元格?
怎么跟椐一个字符串查找到相应的单元格?  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2006-12-20 20:46 | SUNJIE
楼主实在是高,看过楼主的帖子解决了不少问题。但是还有一个不会,就是怎样将在VB picture中生成的图片导入WORD中呢??  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2007-02-05 10:17 | 落雁lilac
楼主实在是高
有个问题一直很奇怪,怎么把光标移到文档末尾,比如我要把剪切板上的东西复制到文件尾。我写的是
ActiveDocument.Range(ActiveDocument.End,ActiveDocument.End).Select
Selection.Paste
这样是不对的
请教搂主  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2007-02-05 16:27 | 落雁lilac
哇哈哈
半天的试验,问题已解决
有空大家可以到我的空间看看
有不少平时我积累的有关编程方面的心得  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2007-07-01 01:08 | liguang
如何用vb在word 中生成多个表格,尤其是在很多时 涉及到换页的操作时,
大家各我看看,我的邮箱是999999999liguang@.163.com qq:26749732
下面是我的代码 :
For n = 1 To 6
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=10+n, NumColumns:= _
6, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed


With wdDoc.Tables(n)
.Cell(1, 1).Merge .Cell(1, 6)
End With



With Selection.Tables(1)
If .Style <> "网格型" Then
.Style = "网格型"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
End With
ActiveWindow.ActivePane.VerticalPercentScrolled = 45
Selection.MoveDown Unit:=wdLine, Count:=10+n + 1

Selection.TypeParagraph
Next n
  回复  更多评论
  
# re: VB程序操作word表格(文字、图片)[未登录] 2008-01-30 08:50 | 新手
@廉洁
请问高手廉洁,怎样才能把光标移出表格。期盼。  回复  更多评论
  
# re: VB程序操作word表格(文字、图片)[未登录] 2008-01-30 09:06 | 新手
请问高手廉洁,怎样才能把光标移出表格。期盼。  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2008-04-06 19:31 | 新手入伙
请教楼主
怎样将excel单元格的内容转化到设定好的word表格模板中去?多谢!

  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2008-04-29 17:41 | 问路人
楼主。我现在每次插表格都是在word文档起始位置开始。插入表格之后我想在后面接文字,请问楼主用什么语句控制光标到最后一位啊
例如:
楼主,你好
第 1单元格 第 2单元格 第 3单元格 第 4单元格
你好,楼主



  回复  更多评论
  
#  VB程序识别word合并及拆分单元格 2008-08-12 17:00 | 我不懂
斑竹,请问word中的合并单元格和拆分单元格如何判定,也就是它们的特征或标志是什么?急!急!急!急!急!急!急!  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2010-07-09 09:18 | phcah@163.com
请教,VBA里如何判断 某一段或几段用了哪个 项目符号 用什么属性,查了很多资料都是讲怎么设置项目符号的,没有检测的。谢谢。  回复  更多评论
  
# 求教:如何将word文档的内容copy到Excel 中 2011-01-03 22:57 | EricPu
本人正在学习用VBA在Excel中编程处理数据,我想把word文档中的内容copy到excel中进行处理。逐行copy或一次性全部拷入均可。我已经可以打开word文档了,但接下来就不知如何进行了。请那位有经验的高人知道一下。
Dim docApp 'As Word.Application
Set docApp = CreateObject("Word.Application")
docApp.Visible = False
Dim doc 'As Word.Document

Set doc = docApp.Documents.Open("D:\MyDocuments\报告数据\WorkingVersion\foo.doc")

多谢了!
  回复  更多评论
  
# re: VB程序操作word---求指教,多谢! 2011-11-05 22:09 | 我爱小脚丫
这个vb6.0代码不能实现指定页打印,不论怎样设置 Copies:和Pages都和没有一样,错在哪里,请指教!
Private Sub Command1_Click()

Dim WordApp

Dim Word Set WordApp = CreateObject("Word.Application")

'WordApp.Visible = True

Set Word = WordApp.Documents.Open("d:\abc.doc")

WordApp.Application.PrintOut Copies:=1, Pages:="1,5"

Word.Close

WordApp.Quit

Set WordApp = Nothing

Set Word = Nothing

End Sub
  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2012-04-12 22:11 | qytom
我想设定图片的大小,要如何做?用上述方法(.AddPicture)会用图片原始大小来显示,我想要自己规定的大小来显示。  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2012-04-15 19:45 | sunrain
如何用vb操作word表格中单元格中字体格式为上下居中?  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2012-06-01 14:30 | zqw
怎样用vb复制word表格?  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2012-06-12 12:04 | 小骰子
设置某个文字为下标怎么设呢?  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2013-03-14 16:31 | 110259413@qq.com
整行 怎么选 写代码 我想拆分 整行 把整行才分 2行 3行 4行 怎么写  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2014-01-01 10:49 | 千真万确
请问如何将word中的图片读取到一个变量中,或保存到磁盘的一个目录中?  回复  更多评论
  
# re: VB程序操作word表格(文字、图片) 2014-04-01 10:20 | ganzi
合并之后怎么对合并后的单元格赋值呢@黑旋风
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: