wordvba表格线Word格式.docx
《wordvba表格线Word格式.docx》由会员分享,可在线阅读,更多相关《wordvba表格线Word格式.docx(6页珍藏版)》请在冰豆网上搜索。
二、在读写表格中的单元格
写入单元格使用如下代码:
tableobject.cell(Row:
=curRow,column:
=curcolumn).Range.insertafter"
文本"
上面代码的做用时在curRow行,curcolumn列处插入字符“文本”。
其中tableobject为表格对象,如果使用了生成表格中的例子,那么可以用selfgentable来替代tableobject。
三、调整单元格对齐方式
水平对齐设置
selection.paragraphFormat.alignment=水平对齐常数(具体的常数可以查看帮助文件的说明)如何选择单元格?
选定特定单元格
=1,column:
=1).select’选定单元格1,1
选定行
tableobject.Rows(i).select’选定第i行
选定列
tableobject.columns(i).select’选定第i列
选定整个表格
tableobject.select
首先执行表格元素选择程序,然后再使用selection.paragraphFormat.alignment设置对齐方式。
垂直对齐方式
selection.cells.Verticalalignment=垂直对齐常数
也是首先选择表格元素,可以使单个单元格,单个行、单个列或者整个表格。
似乎也可以同时选择多个单元格、多个行、多个列,有兴趣的朋友可以自行寻找答案。
四、设置表格边线类型
下面的代码对整个表格的所有边线设置成细实线:
selfgentable.select
withselection
.borders(wdborderbottom).linestyle=wdlinestylesingle
.borders(wdborderleft).linestyle=wdlinestylesingle
.borders(wdborderRight).linestyle=wdlinestylesingle
.borders(wdbordertop).linestyle=wdlinestylesingle
.borders(wdborderhorizontal).linestyle=wdlinestylesingle
.borders(wdborderVertical).linestyle=wdlinestylesingle
endwith
同样是对selection进行设置,所以可以依照上面的方法对特定的单元格、行或者列的边线样式进行分别设置,这里就不再列举了。
五、调整表格尺寸
下面的代码对一个六列的表格设置宽度,宽度采用百分比宽度,从左至右的宽度百分比依次为:
30,10,10,30,10,10:
dimwidthp(0to2)asinteger
dimjasinteger
dimiasinteger
widthp(0)=30
widthp
(1)=10
widthp
(2)=10
j=0
Fori=0toselfgentable.columns.count-1
ifj>
2then
endif
selfgentable.columns(i+1).preferredwidthtype=wdpreferredwidthpercent
selfgentable.columns(i+1).preferredwidth=widthp(j)
j=j+1
next
上面的代码通过columns的preferredwidthtype属性设置表格列宽的形式,这里选择的是百分比列宽,可以根据自己的实际情况选择其他列宽形式,然后再设置相应的数值。
表格的行高请读者以此类推(实际上我还没设置过行高,都用自动生成的就够了)===============================================
编写操作表格的程序时需要注意,word表格的行列起始值为1,而不是0。
===============================================
下面是一个拆分字符串的代码,当插入表格的文本过长时,可以设定一个长度,超过这个长度就进行回车,这样保证在设定的单元格宽度内能够写下长文本。
单元格的高度会自动调整以使文本能完整的显示,这也就是我为什么没有通过代码设置单元格高度的原因。
privateFunctionFoldtext(mlenasinteger,mstrasstring)asstring
折叠文字函数,mlen为折叠前的文字长度,mstr为文字的内容
dimtmpstr(0to1)asstring临时字符串
iflen(mstr)>
mlenthen
dowhilelen(mstr)>
mlen
tmpstr(0)=left(mstr,mlen)
mstr=Right(mstr,len(mstr)-mlen)
tmpstr
(1)=tmpstr
(1)+tmpstr(0)+vbcrlf
loop
tmpstr
(1)=tmpstr
(1)+mstr
else
tmpstr
(1)=mstr
Foldtext=tmpstr
(1)endFunction
================================================
篇二:
用Vba操作word表格word的表格功能是非常重要的一个功能
用Vba操作word表格word的表格功能是非常重要的一个功能,
也是用户经常使用的一项功能,在word20xx中,增加了不少
新的功能。
如果利用Vba自动处理表格将使用户的效率有极大
的提高。
1.向表格单元格插入文字
下面的代码向活动文档的第一个表格的第一个单元格插入
文字。
cell方法返回单个的cell对象。
Range属性返回一个
Range对象。
delete方法用来删除现有的文字,而insertafter方
法用来插入"
cell1,1"
文字。
ifactivedocument.tables.count>
=1then
withactivedocument.tables
(1).cell(Row:
=1).Range
.delete
.insertaftertext:
="
2在表格中插入文字
下面的代码在文档的开头插入一张3行4列的表格。
For
each...next结构用来循环遍历表格中的每个单元格。
在For
each...next结构中,insertafter方法用来向表格单元格(cell1、
cell2等等)添加文字。
setodoc=activedocument
setotable=odoc.tables.add(Range:
=odoc.Range(start:
=0,end:
=0),
numRows:
=3,numcolumns:
=4)
icount=1
Foreachocellinotable.Range.cells
ocell.Range.insertafter"
cell"
非常重要,目的
是去掉换行符
否则内容后面会有个小圆点
msgboxmyRange.text
nextacell
4将文本转换为表格
下面的代码在活动文档的开头插入以制表符分隔的文本,
然后将这些文本转换为一张表格。
setoRange1=activedocument.Range(start:
=0)
oRange1.insertbefore"
one"
图1@@
=0),numRows:
第"
图2@@
(2)如果需要在表格的第二列插入星期值,可在上例的Foreach...next结构中插入以下几行:
ificountmod4=2andicount>
4then
ocell.Range.insertaftercweekname(weekday(date+(icount-1)/4))
其中,weekday(date)返回一数值(1~7),分别表示"
星期日"
~"
星期六"
cweekname数组需要事先定义为:
dimcweekname(7)
cweekname
(1)="
cweekname
(2)="
星期一"
......
cweekname(7)="
4.根据单元格的内容设置不同的格式
以上例中表格为例,如果需要将所有"
和"
所在行格式改为蓝色背景,只要在上例程序之后追加以下几行即可(表格格式改为wdtableFormatcolorful2,行数改为12行)。
程序中再次使用Foreach...next结构遍历表格中的每一行(Rows),如果检测到某一行满足条件("
或"
),则选择一行(selection.selectRow),将其属性改为需要的格式(本例中为蓝色背景)。
ForeachRowsinotable.Range.Rows
if(weekday(date+(icount-1))=7orweekday(date+(icount-1))=1)andicount>
1
then
selection.selectRow
withselection.cells
with.shading
.texture=wdtexturenone
.Foregroundpatterncolorindex=wdauto
.backgroundpatterncolorindex=wdblue
icount=icount+1
selection.movedownunit:
=wdline,count:
=