注册 登录
编程论坛 VB6论坛

[开源]VB操作WORD.

随风逐流 发布于 2007-10-25 14:22, 14154 次点击

对其WORD内容设置字体样式.
在WORD中插入表格,以及表格单元格融合与填充.
以下代码在如要在中文系统下运行。将"表 (格子) "换成"网格型"

Option Explicit

Private Sub Command1_Click()
Dim filename As String
CD.ShowSave
filename = CD.filename
OutWord filename
MsgBox "OK"
End Sub

Private Function OutWord(ByVal filePath As String) As Boolean
Dim newDoc As Word.Document
Set newDoc = New Word.Document

With newDoc
.Paragraphs(.Paragraphs.Count).Range.Font.Name = "宋体"
.Paragraphs(.Paragraphs.Count).Range.Font.Size = 10.5
.Paragraphs(.Paragraphs.Count).Alignment = wdAlignParagraphRight
.Content.InsertAfter "編号:" & vbCrLf

.Paragraphs(.Paragraphs.Count).Range.Font.Name = "宋体"
.Paragraphs(.Paragraphs.Count).Range.Font.Size = 26
.Paragraphs(.Paragraphs.Count).Range.Font.Bold = True
.Paragraphs(.Paragraphs.Count).Alignment = wdAlignParagraphCenter
.Content.InsertAfter vbCrLf & "XXXXXXXXX報告" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf

.Paragraphs(.Paragraphs.Count).Range.Font.Name = "宋体"
.Paragraphs(.Paragraphs.Count).Range.Font.Size = 15
.Paragraphs(.Paragraphs.Count).Range.Font.Bold = False
.Paragraphs(.Paragraphs.Count).Alignment = wdAlignParagraphLeft
.Content.InsertAfter "项目名称:" & vbCrLf
.Content.InsertAfter "应急类型:" & vbCrLf
.Content.InsertAfter "预警状态:正常/警界/危机" & vbCrLf

.Paragraphs(.Paragraphs.Count).Alignment = wdAlignParagraphCenter
.Tables.Add Range:=.Range(Start:=.Range.End - 1, End:=.Range.End), NumRows:=1, NumColumns:=3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
With .Tables(1)
If .Style <> "表 (格子)" Then
.Style = "表 (格子)"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
.Columns.Width = 50
.Rows.Height = 20
End With

.Paragraphs(.Paragraphs.Count).Range.Font.Name = "宋体"
.Paragraphs(.Paragraphs.Count).Range.Font.Size = 15
.Paragraphs(.Paragraphs.Count).Range.Font.Bold = False
.Paragraphs(.Paragraphs.Count).Alignment = wdAlignParagraphLeft
.Content.InsertAfter "委 托 人:" & vbCrLf
.Content.InsertAfter "预 警 机 构:" & vbCrLf
.Content.InsertAfter "报告负责人:" & vbCrLf
.Content.InsertAfter "时 间:" & vbCrLf

.Paragraphs(.Paragraphs.Count).Alignment = wdAlignParagraphLeft
.Tables.Add Range:=.Range(Start:=.Range.End - 1, End:=.Range.End), NumRows:=8, NumColumns:=2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
With .Tables(2)
If .Style <> "表 (格子)" Then
.Style = "表 (格子)"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
.Cell(2, 1).Range.Text = "项目名称"
.Range.Cells(3).Row.Cells.Merge
.Range.Cells(3).Range.Font.Size = 15
.Range.Cells(3).Range.Text = "信息来源/文献检索范围:" & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(4).Row.Cells.Merge
.Range.Cells(4).Range.Text = "情况描述/检索结果:" & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(5).Row.Cells.Merge
.Range.Cells(5).Range.Text = "影响分析:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(6).Row.Cells.Merge
.Range.Cells(6).Range.Text = "建议:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(7).Row.Cells.Merge
.Range.Cells(7).Range.Text = "专家组成员:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(8).Row.Cells.Merge
.Range.Cells(8).Range.Text = "附件目录:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(9).Row.Cells.Merge
.Range.Cells(9).Range.Text = "报告负责人:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & " 年 月 日"
End With

End With

newDoc.SaveAs filePath
newDoc.Close
End Function

[此贴子已经被作者于2007-10-25 21:23:28编辑过]

57 回复
#2
那边有朵蘑菇云2007-10-25 14:27
受用 谢谢露猪
#3
随风逐流2007-10-25 14:29
没人识货啊.郁闷.
#4
那边有朵蘑菇云2007-10-25 14:31
好东西 谢谢露猪 我顶了 我拼了命了顶了
#5
三断笛2007-10-25 14:35
好东西!
#6
purana2007-10-25 14:51
不错.
加精..
帮顶.
#7
随风逐流2007-10-25 14:59
呵呵,谢谢,忘了说了,用之前,先引用Microsoft Word 11.0 Object Library
和添加附件Microsoft Common Dialog Control 6.0(SP6)
#8
peace2007-10-25 15:25
CD.ShowSave
filename = CD.filename
CD是什么意思呀~!~!
#9
随风逐流2007-10-25 15:52
Microsoft Common Dialog Control 6.0(SP6)这个控件名
#10
dawn46405762007-10-25 15:58

头都顶晕了~
#11
缘吇弹2007-10-25 16:35





#12
随风逐流2007-10-25 16:52
LS的真不容易,转眼就39个威望了.
#13
Joforn2007-10-25 17:17
偶尔飘过。。。。。。
#14
西风独自凉2007-10-25 17:29
不錯。。。頂、、、、、但頭不會頂到暈了。。。。。
#15
西风独自凉2007-10-25 17:30
回复:(随风逐流)LS的真不容易,转眼就39个威望了.
要得威望多。。。。那麼灌水得排第一。。。。
#16
随风逐流2007-10-25 17:39
灌水太累,最近两个星期,忙的我每天晚上11点到家.
#17
purana2007-10-25 17:41
我想忙都没得忙..
还没找到工作..
身价..直线下降..降到700
#18
随风逐流2007-10-25 17:42
...........700还没活吗?
#19
peace2007-10-25 17:50
表 (格子) 这里是什么意思?
#20
purana2007-10-25 17:50
700还没..
估计继续降..
#21
peace2007-10-25 17:55
表 (格子) 这里是什么意思?
有没有人懂啊~!
#22
purana2007-10-25 17:57

不就是表格咯.
你没用过word?..

#23
peace2007-10-25 18:04

我用这段程序,提示这里有错误:带指定名称的项目不存在 实时错误'5834'

#24
peace2007-10-25 18:27

有人知道吗?

#25
风月_无边2007-10-25 18:31

曾經做過一個excel 自動閱卷系統﹐很類似的方法。

vb來操作office確實很方便。

#26
peace2007-10-25 18:37
风月_无边有Q吗,我需要你的帮助
#27
随风逐流2007-10-25 21:22
表 (格子) 换成"网格型"
#28
缘吇弹2007-10-25 21:36
以下是引用purana在2007-10-25 17:41:18的发言:
我想忙都没得忙..
还没找到工作..
身价..直线下降..降到700

泼辣,只要生计能解决,不要太看重一份工.
自由职业不错的,我觉得你挺适合的.

#29
缘吇弹2007-10-25 21:39
以下是引用peace在2007-10-25 17:55:12的发言:
表 (格子) 这里是什么意思?
有没有人懂啊~!

格子,也叫马赛刻.

#30
缘吇弹2007-10-25 21:40
以下是引用Joforn在2007-10-25 17:17:25的发言:
偶尔飘过。。。。。。

师兄,这也太偶尔了吧.

#31
peace2007-10-26 15:37
如何导入数据呀~!
#32
随风逐流2007-10-26 16:15

什么导入数据?说明白一点.

#33
peace2007-10-26 16:30
就是把数据库里的数据放到word的表里
#34
peace2007-10-29 11:22
没有人说!还是太简单了~!
#35
随风逐流2007-10-29 11:49
.Cell(2, 1).Range.Text = "项目名称"
.Range.Cells(3).Row.Cells.Merge
.Range.Cells(3).Range.Font.Size = 15
.Range.Cells(3).Range.Text = "信息来源/文献检索范围:" & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(4).Row.Cells.Merge
.Range.Cells(4).Range.Text = "情况描述/检索结果:" & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(5).Row.Cells.Merge
.Range.Cells(5).Range.Text = "影响分析:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(6).Row.Cells.Merge
.Range.Cells(6).Range.Text = "建议:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(7).Row.Cells.Merge
.Range.Cells(7).Range.Text = "专家组成员:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(8).Row.Cells.Merge
.Range.Cells(8).Range.Text = "附件目录:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
.Range.Cells(9).Row.Cells.Merge
.Range.Cells(9).Range.Text = "报告负责人:" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & " 年 月 日"

老兄,这个就是表的内容填充啊.你看下代码啊.
#36
心中有剑2007-10-29 11:58
也是用 Dim newDoc As Word.Document
Set newDoc = New Word.Document
这个啊!这样每次都new一个,速度很慢的!如果已经有打开的word 可以考虑直接用已经打开的word应用啊!
#37
peace2007-10-29 14:41
导出的内容只有 "信息来源/文献检索范围:"这样的标题,我想把数据库中标题这个字段的数据也放到word里,应该加点啥呢,能举个例吗~!
#38
随风逐流2007-10-29 14:54
如果说你的数据库字段数据RS("FNAME")
.Range.Cells(3).Range.Text = "信息来源/文献检索范围:" & vbCrLf & RS("FNAME").VALUE & vbCrLf & vbCrLf
#39
peace2007-10-29 15:31
谢谢
#40
随风逐流2007-10-29 15:42
郁闷,你真不是一般的菜呀,纯粹门外汉.......
#41
peace2007-10-29 16:00

哈哈,没有用过这个东西,

#42
peace2007-10-29 16:09
再问个问题,怎么和datagrid联系起来呢,点哪行就导出哪行的数据
#43
随风逐流2007-10-29 16:24
..........不是没用过,是你什么都不懂哦.
你问这样的问题都没法回答,只能用代码回答.
#44
peace2007-10-29 16:36
如何导出指定的数据内容?我数据显示用的是datagrid+Adodc
这样问懂了咩?
#45
随风逐流2007-10-29 17:08
用代码一步一步的从DATAGRID中把数据拿出来.
#46
peace2007-10-29 17:25
呵呵
#47
那边有朵蘑菇云2007-10-30 08:22
还顶着呢 继续学习了
#48
huzhongyue2008-06-22 21:28
如何对单元格里面的内容进行格式调整呢?比如说让单元格里的内容居中对齐?
#49
deli2008-09-03 09:34
刚好用上,谢了!!
#50
bjhld2008-11-20 12:52
很好的程序,谢谢提供。对于我这样的新手来说是一个不错的教程!
#51
amean2010-09-15 23:34
谢谢找到了
12