怎样在Word中用VBA操作表格
使用VBA操作Word表格 一、生成表格 Private Sub CreateTable(mRows As Integer, mColumns) Dim mRange As Range Set mRange = ActiveDocument.Range mRange.SetRange Start:=ActiveDocument.Range.End, End:=ActiveDocument.Range.End Set SelfGenTable = ActiveDocument.Tables.Add(Range:=mRange, NumRows:=mRows, NumColumns:=mColumns) End Sub 上面过程的作用是在活动文档的末尾插入一个mRows行,mColumns列的表格。
二、在读写表格中的单元格 写入单元格使用如下代码: TableObject.Cell(Row:=curRow, Column:=curColumn).Range.InsertAfter "文本" 上面代码的做用时在curRow行,curColumn列处插入字符“文本”。
其中TableObject为表格对象,如果使用了生成表格中的例子,那么可以用SelfGenTable来替代TableObject。
三、调整单元格对齐方式 水平对齐设置 Selection.ParagraphFormat.Alignment=水平对齐常数(具体的常数可以查看帮助文件的说明) 如何选择单元格? 选定特定单元格 TableObject.Cell(Row:=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 With Selection .Borders(wdBorderBottom).LineStyle = wdLineStyleSingle .Borders(wdBorderLeft).LineStyle = wdLineStyleSingle .Borders(wdBorderRight).LineStyle = wdLineStyleSingle .Borders(wdBorderTop).LineStyle = wdLineStyleSingle .Borders(wdBorderHorizontal).LineStyle = wdLineStyleSingle Borders(wdBorderVertical).LineStyle = wdLineStyleSingle End With 同样是对Selection进行设置,所以可以依照上面的方法对特定的单元格、行或者列的边线样式进行分别设置,这里就不再列举了。
五、调整表格尺寸 下面的代码对一个六列的表格设置宽度,宽度采用百分比宽度,从左至右的宽度百分比依次为:30,10,10,30,10,10: Dim WidthP(0 To 2) As Integer Dim j As Integer dim i as Integer WidthP(0) = 30 WidthP(1) = 10 WidthP(2) = 10 j = 0 For i = 0 To SelfGenTable.Columns.Count - 1 If j > 2 Then j = 0 End If SelfGenTable.Columns(i + 1).PreferredWidthType = wdPreferredWidthPercent SelfGenTable.Columns(i + 1).PreferredWidth = WidthP(j) j = j + 1 Next 上面的代码通过Columns的PreferredWidthType属性设置表格列宽的形式,这里选择的是百分比列宽,可以根据自己的实际情况选择其他列宽形式,然后再设置相应的数值。
表格的行高请读者以此类推(实际上我还没设置过行高,都用自动生成的就够了) =============================================== 编写操作表格的程序时需要注意,Word表格的行列起始值为1,而不是0。
=============================================== 下面是一个拆分字符串的代码,当插入表格的文本过长时,可以设定一个长度,超过这个长度就进行回车,这样保证在设定的单元格宽度内能够写下长文本。
单元格的高度会自动调整以使文本能完整的显示,这也就是我为什么没有通过代码设置单元格高度的原因。
Private Function FoldText(mLen As Integer, mStr As String) As String '折叠文字函数,mLen为折叠前的文字长度,mStr为文字的内容 Dim i As Integer Dim tmpStr(0 To 1) As String '临时字符串 If Len(mStr) > mLen Then Do While Len(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
在word中使用VBA区分标题和正文
获取标题与正文使用style。
试验一下如下代码。
Sub Test()Dim i As SingleFor i = 1 To ActiveDocument.BuiltInDocumentProperties(wdPropertyLines).ValueWith Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=i.HomeKey Unit:=wdLine.EndKey Unit:=wdLine, Extend:=wdExtendEnd WithIf Selection.Style = "正文" ThenMsgBox i &; "行是正文"End IfIf Selection.Style = "标题 1" ThenMsgBox i &; "行是标题 1"End IfNextEnd Sub
如何在word中用vba在一个range对象的前部插入段落标记(?
(1) ActiveDocument.Range(Start:=0, End:=10) '表示当前文档前10个字符所组成的一个Range对象 (2) Set myRange = ActiveDocument.Range( _ Start:=ActiveDocument.Paragraphs(2).Range.Start, _ End:=ActiveDocument.Paragraphs(4).Range.End) '将当前文档第2段至第4段设置为一个Range对象 (3) ActiveDocument.Paragraphs(1).Range.Copy '复制当前文档中的第一段 (4) Selection.Copy Documents.Add.Content.Paste '复制所选内容到新文档中 (5) ActiveDocument.Bookmarks("Book1").Copy Name:="Book2" '将Book2书签复制Book1书签标记的位置 (6) Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=4 '将所选内容移至文档中的第4行 (7) Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext '将所选内容移至下一个表格的第1个单元格 (8) Selection.Range.AutoFormat '为所选内容套用格式 (9) ActiveDocument.Content.Font.Name = "Arial" '将当前文档的字体设置为斜体 (10) ActiveDocument.Content.Select Selection.Delete '将当前文档中的内容删除
怎样在word中使用vba创建一个函数,功能是求1乘到n且n不大?
vba用来编写宏程序,处理文本,比如能批量修改某些符号、文字,根据设定自动设定文本、文章格式,检查文本错误等等。
还可以用宏程序查找指定文本、修改特定代码,转化为一些特定的公式字符或代号。
总之,word里的功能都可以用vba实现,而且是自动运行,不是你想像的那样手工一个个去修改。
高手可以用来做很多扩展的功能,当然是word相关的。
比如加入自己喜欢使用的图形、处理各种图片、图表、剪贴图、艺术字等等。
使用VBA在查询WORD中表格的内容
操作步骤。
第一,首先将需要批量替换的多个Word文档放在同一文件夹下面。
第二,新建一空白Word文档,右击空白工具栏,单击“控件工具箱”,就可以看到屏幕上调出的控件工具箱。
第三,在控件工具箱上单击“命令按钮”,文档中就放置了一个按钮了。
第四,双击该按钮,进入VB代码编写模式,将以下代码复制进去。
Private Sub CommandButton1_Click()Application.ScreenUpdating = FalseDim myPas As String, myPath As String, i As Integer, myDoc As DocumentWith Application.FileDialog(msoFileDialogFolderPicker) .Title = "选择目标文件夹" If .Show = -1 Then myPath = .SelectedItems(1) Else Exit Sub End IfEnd WithmyPas = InputBox("请输入打开密码:")With Application.FileSearch .LookIn = myPath .FileType = msoFileTypeWordDocuments If .Execute > 0 Then For i = 1 To .FoundFiles.Count Set myDoc = Documents.Open(FileName:=.FoundFiles(i), Passworddocument:=myPas) Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "大家好" .Replacement.Text = "你好" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll myDoc.Save myDoc.Close Set myDoc = Nothing Next End IfEnd WithApplication.ScreenUpdating = TrueEnd Sub 第五,保存上面代码,退出VB编辑模式,返回Word文档界面。
第六,单击选中该按钮,再单击控件工具箱的第一个按钮“退出设计模式”。
第七,进行测试:点击按钮,选择要放置多个WORD文档所在的文件夹,确定后即可完成!注意如果WORD文档没有加密的话,密码项就不填,直接确认。
就会发现该文件夹下面的所有WORD文档中“大家好”已被替换为“你好”了。
转载请注明出处51数据库 » word中使用vba
susu64616109