在 Word 中,几乎所有的操作都要调用 Document 对象本身或其内容。当您用 VBA 操作 Word 时,Document 对象表示一个打开的文档,而且所有的 Document 对象都是 Application 对象的 Documents 集合的成员。
文档是一个由字符、单词、句子和段落组成的集合,字符组成单词,单词组成句子,句子组成段落,等等。因此,每一个 Document 对象都具有 Characters、Words、Sentences 和 Paragraghs 四个集合。此外,每个文档具有一个包含一个或多个节的 Sections 集合,每一个节都有一个包含该节页眉和页脚的 HeadersFooters 集合。
注意: 您可以在 Microsoft Office 2000 开发人员对象模型指南(英文)中查阅完整的 Word 对象模型。另外,您也可以使用对象浏览器和 Microsoft Word Visual Basic 参考帮助来学习有关具体某个对象、属性、方法和事件的详细内容。
通过 VBA 使用 Word 时,Document 对象处于中心位置。如果您要打开文档或创建新文档,就要创建新的 Document 对象。每个打开或新创建的文档均被添加至 Documents 集合。具有焦点的文档称为活动文档,由 ActiveDocument 属性表示。
Document 对象作为 Documents 集合中的一个成员,您可以通过使用 Document 对象的索引值(Document 对象在 Documents 集合中的位置,1 是集合中的第一个文档)或名称来引用它。另外,您也可以使用 ActiveDocument 属性来引用当前具有焦点的文档。例如,如果名为 Policies.doc 的文档是唯一打开的文档,则以下三个对象变量将全部指向 Policies.doc:
Dim docOne As Word.Document
Dim docTwo As Word.Document
Dim docThree As Word.Document
Set docOne = Documents(1)
Set docTwo = Documents("Policies.doc")
Set docThree = ActiveDocument
一般情况下不要使用 Documents 集合中的索引值来引用文档,因为当其它文档打开或关闭时,某个特定文档的索引值可能会随之改变。通常,您可以通过使用 ActiveDocument 属性或使用 Documents 集合的 Add 方法或 Open 方法创建的 Document 对象变量。以下示例显示了如何使用 ActiveDocument 属性把一个地址添加到当前具有焦点的文档中:
With ActiveDocument
.Envelope.Insert Address:="Office Talk" _
& vbCrLf & "One Microsoft Way" & vbCrLf _
& "Redmond, WA 98052", ReturnAddress:= _
"David Shank" & vbCrLf & _
"77 First Street" & vbCrLf & _
"Any Town, USA 12345"
End With
下面的示例说明如何通过使用 Documents 集合的 Open 方法,实例化 Document 对象变量。
Dim docPolicy As Word.Document
Set docPolicy = Documents.Open("c:\my documents\policies.doc")
最后一个示例显示如何通过使用 Add 方法,为新的空文档创建 Document 对象的实例。
Dim docPolicy As Word.Document
Set docPolicy = Documents.Add
通过使用 Open 方法打开的文档,或者通过使用 Add 方法创建的文档,都将成为用 ActiveDocument 属性表示的当前活动文档。如果您想使 Documents 集合里的其它文档成为活动文档,可使用 Document 对象的 Active 方法。
一旦您获取了要操作的 Document 对象,绝大部分您想通过 VBA 进行的工作将涉及文本的操作。首先要指定文档的一个部分,然后对它进行某些操作。例如,添加或删除文本,或者设置单词或字符的格式。您可以使用 Range 或 Selection 这两个对象来完成很多工作。
Word vba常用语句100句
1、系统参数
(01) Application.ActivePrinter ‘获取当前打印机
(02) Application.Height '当前应用程序文档的高度
(03) Application.Width ‘当前应用程序文档的宽度
(04) Application.Build ‘获取Word版本号和编译序号
(05) Application.Caption ‘当前应用程序名
(06) Application.DefaultSaveFormat '返回空字符串,表示Word文档
(07) Application.DisplayRecentFiles '返回是否显示最近使用的文档的状态
(08) Application.Documents.Count '返回当前打开的文档数
(09) Application.FontNames.Count ‘返回当前可用的字体数
(10) Application.Left ‘返回当前文档的水平位置
(11) Application.MacroContainer.FullName '返回当前文档名,包括所在路径
Application.MacroContainer.pach '返回当前文档路径
Application.ActiveDocument.Path ‘获得文件的相对路径
(12) Application.NormalTemplate.FullName '返回文档标准模板名称及所在位置
(13) Application.RecentFiles.Count '返回最近打开的文档数目
(14) Application.System.CountryRegion '返回应用程序所在的地区代码
(15) Application.System.FreeDiskSpace ‘返回应用程序所在磁盘可用空间
(16) Application.System.HorizontalResolution '返回显示器的水平分辨率
(17) Application.System.VerticalResolution '返回显示器的垂直分辨率
(18) Application.System.LanguageDesignation '返回系统所使用的语言
(19) Application.System.MathCoprocessorInstalled ‘返回系统是否安装了数学协处理器
(20) Application.System.OperatingSystem ‘返回当前操作系统名
(21) Application.System.ProcessorType '返回计算机处理器名
(22) Application.System.Version ‘返回操作系统的版本号
(23) Application.Templates.Count '返回应用程序所使用的模板数
(24) Application.UserName '返回应用程序用户名
(25) Application.Version ‘返回应用程序的版本号
2、Documents/Document对象
(26) ActiveDocument.AttachedTemplate.FullName '返回当前文档采用的模板名及模板所在位置
(27) ActiveDocument.Bookmarks.Count '返回当前文档中的书签数
(28) ActiveDocument.Characters.Count '返回当前文档的字符数
(29) ActiveDocument.CodeName ‘返回当前文档的代码名称
(30) ActiveDocument.Comments.Count ‘ 返回当前文档中的评论数
(31) ActiveDocument.Endnotes.Count '返回当前文档中的尾注数
(32) ActiveDocument.Fields.Count '返回当前文档中的域数目
(33) ActiveDocument.Footnotes.Count ‘返回当前文档中的脚注数
(34) ActiveDocument.FullName '返回当前文档的全名及所在位置
(35) ActiveDocument.HasPassword '当前文档是否有密码保护
(36) ActiveDocument.Hyperlinks.Count '返回当前文档中的链接数
(37) ActiveDocument.Indexes.Count '返回当前文档中的索引数
(38) ActiveDocument.ListParagraphs.Count '返回当前文档中项目编号或项目符号数
(39) ActiveDocument.ListTemplates.Count '返回当前文档中使用的列表模板数
(40) ActiveDocument.Paragraphs.Count '返回当前文档中的段落数
(41) ActiveDocument.Password=XXX '设置打开文件使用的密码
(42) ActiveDocument.ReadOnly '获取当前文档是否为只读属性
(43) ActiveDocument.Saved '当前文档是否被保存
(44) ActiveDocument.Sections.Count '当前文档中的节数
(45) ActiveDocument.Sentences.Count ‘当前文档中的语句数
(46) ActiveDocument.Shapes.Count '当前文档中的形状数 ,图形?
(47) ActiveDocument.Styles.Count '当前文档中的样式数
(48) ActiveDocument.Tables.Count ‘当前文档中的表格数
(49) ActiveDocument.TablesOfAuthorities.Count ‘返回当前文档中的引文目录数
(50) ActiveDocument.TablesOfAuthoritiesCategories.Count ‘返回当前文档中引文目录类别数
(51) ActiveDocument.TablesOfContents.Count ‘返回当前文档中的目录数
(52) ActiveDocument.TablesOfFigures.Count '返回当前文档中的图表目录数
3、Paragraphs/Paragraph对象
(53) Selection.Paragraphs.Count '返回所选区域的段落数
(54) Selection.Paragraphs.First '返回所选区域中的第一段
(55) ActiveDocument.Paragraphs(1).LeftIndent '返回当前文档中第一段的左缩进值
(56) ActiveDocument.Paragraphs(1).LineSpacing '返回当前文档中第一段的行距
(57) ActiveDocument.Paragraphs(1).OutlineLevel ‘返回或设置当前文档中第一段的大纲级别
.OutlineLevel = wdOutlineLevel2 ‘2级
.OutlineLevel = wdOutlineLevel3 ‘3级
(58) ActiveDocument.Paragraphs(1).RightIndent ‘返回当前文档中第一段的右缩进量
(59) ActiveDocument.Paragraphs(1).SpaceBefore '返回当前文档中第一段的段前间距
(60) ActiveDocument.Paragraphs(1).SpaceAfter ‘返回当前文档中第一段的段后间距
(61) ActiveDocument.Paragraphs(1).Range.Text '返回当前文档中第一段的内容
(62) ActiveDocument.Paragraphs(1).Range.Style.NameLocal '返回当前文档中第一段应用的样式名
(63) ActiveDocument.Paragraphs(1).Range.Style.Description '返回当前文档中第一段所应用样式的详细描述
(64) ActiveDocument.Paragraphs(1).Range.Style.Font.Name '返回当前文档中第一段所应用样式的字体名
(65) ActiveDocument.Paragraphs(1).Range.Style.Font.NameFarEast '返回或设置一种东亚字体名
(66) ActiveDocument.Paragraphs(1).Range.Style.Font.Size '返回或设置当前文档中第一段所应用样式的字体大小
(67) ActiveDocument.Paragraphs(1).Range.Style.Font.Spacing '返回或设置字符间距
(68) Selection.Words.Count '所选区域的字数 Sentences对象
(69) Selection.Sentences.Item(1) '所选区域中的第一句的内容 Words对象
(71) ActiveDocument.Words(1).Select '选择当前文档中的第一个词
(72) ActiveDocument.Range.Words(1).InsertAfter "我爱你!" '在当前文档中的第一个词后插入“我爱你”
4、Characters对象
(73) Selection.Characters.Count '当前文档中所选区域的字符数
(74) ActiveDocument.Paragraphs(1).Range.InsertParagraphAfter'在当前文档的第一段之后插入一个新段落
5、Sections/Section对象
(75) ActiveDocument.Sections.First '当前文档的第一节
(76) ActiveDocument.Sections.First.PageSetup.BottomMargin '当前文档第一节所在页的底边距
(77) ActiveDocument.Sections.First.PageSetup.LeftMargin '当前文档第一节所在页的左边距
(78) ActiveDocument.Sections.First.PageSetup.RightMargin '当前文档第一节所在页的右边距
(79) ActiveDocument.Sections.First.PageSetup.TopMargin '当前文档第一节所在页的顶边距
(80) ActiveDocument.Sections.First.PageSetup.PaperSize '返回或设置当前文档第一节所在页的大小
(81) ActiveDocument.Sections.First.PageSetup.PageHeight '返回或设置当前文档第一节所在页的高度
(82) ActiveDocument.Sections.First.PageSetup.PageWidth '返回或设置当前文档第一节所在页的宽度
(83) ActiveDocument.Sections.Add Range:=myRange '在当前文档中添加新节
(84) ActiveDocument.Sections.Item(2) '当前文档中的第二节
(85) ActiveDocument.Sections.Last.Range.InsertAfter "文档结束!" '在当前文档中最后一节的结尾添加文字“文档结束!”
6、Range对象
(86) ActiveDocument.Range(Start:=0, End:=10) '表示当前文档前10个字符所组成的一个Range对象
(87) Set myRange = ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(2).Range.Start, _
End:=ActiveDocument.Paragraphs(4).Range.End) '将当前文档第2段至第4段设置为一个Range对象
(88) ActiveDocument.Paragraphs(1).Range.Copy '复制当前文档中的第一段
(89) Selection.Copy
Documents.Add.Content.Paste '复制所选内容到新文档中
(90) ActiveDocument.Bookmarks("Book1").Copy Name:="Book2" '将Book2书签复制Book1书签标记的位置
(91) Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=4 '将所选内容移至文档中的第4行
(92) Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext '将所选内容移至下一个表格的第1个单元格
(93) Selection.Range.AutoFormat '为所选内容套用格式
(94) ActiveDocument.Content.Font.Name = "Arial" '将当前文档的字体设置为斜体
(95) ActiveDocument.Content.Select Selection.Delete '将当前文档中的内容删除其它
(96) Documents.Add '添加一个新文档
(97) Set myTable = ActiveDocument.Tables.Add(Selection.Range, 2, 2) '在当前文档所选区域添加一个2行2列的表格
7、文件读写
(98) Open "C:\my.txt" For Input As #1 '打开一个用于输入的文件并令其编号为1
(99) Line Input #1, TextLine '读取被打开用于输入且编号为1的文件
(100) Close #1 '关闭编号为1的文件
打开Word时总是出现 “Microsoft Office Word 需要 VBA 宏语言支持来完成此操作。”
启动Word,选择“工具 → 宏 → 安全性”,将“安全级” 调到“非常高”;
切换到“可靠发行商”,将所有来源都删除,取消下方两个复选框的勾选,最后单击“确定”返回即可。
如何使用VBA批改学生Word作业求解答
摘要:Visual Basic for Application(简称VBA)是由Microsoft公司开发的新一代标准宏语言,它具有简单易学、功能强大等特点,对于经常跟Office 打交道的用户来说,学习VBA有助于提高工作效率。本文通过实例详细介绍了如何使用VBA批改学生的Word作业。因Word中涉及的知识点较多,不可能一一加以列举,笔者意在通过本文向读者阐述程序编制的一般方法,通过该方法,可以解决绝大多数Word阅卷的问题。
Word 与VBA混合编程
欢迎学习VBA。不过问题比较笼统哦,不知道怎么帮你了,呵呵
建议拿一个具体实例出来讨论,这样能够更好地说明。
另外,VBA必须寄生于已有的应用程序,必须依赖于它的"父"应用程序,例如EXCEL、Word、AutoCAD,只能在它的"父"应用程序中运行,而不能独立运行。因此,你只要说Word VBA编程或Excel VBA编程,大家就会明白啦 ^_^
excel中如何通过VBA打开word文件和ppt文件?
一、打开word文件代码:Set wo = CreateObject("Word.Application")
wo.Documents.Open ThisWorkbook.Path & "\流程.doc"
wo.Visible = True
二、打开ppt文件代码:方法1:
Set wo = CreateObject("Powerpoint.Application")
wo.Visible = True
wo.Presentations.Open ThisWorkbook.Path & filename方法2:Sub dd()Dim filepath$, filename$
filepath = Chr(34) & ThisWorkbook.Path & filename & Chr(34)
Shell "POWERPNT.EXE " & filepathEnd Sub附:双击打开PPS文件,在演示完后退出PPS时并没有PowerPoint主窗口保留,但在Excel中使用VBA打开的PPS文件,在演示完PPS退出后,PowerPoint主窗口仍然打开。
这里使用一个循环判断演示窗口是否存在,加上错误捕捉程序来处理上面这个问题。
PrivateSub CommandButton1_Click()
Dim wo AsObject Dim app AsObject
' 创建PowerPoint应用实例
Set app = CreateObject("Powerpoint.Application")
' 使PowerPoint可见
app.Visible = True ' 打开PPS文件
Set wo = app.Presentations.Open(ThisWorkbook.Path & "\a.pps")
' 当PPS演示结束时,wo对象的SlideShowWindow不存在,捕捉到错误
OnErrorGoTo errHandle
' PPS演示时全屏
怎样利用vba自动生成word报告
以下是自行编写的代码实例片段,供参考:
'==================='生成分析报告
'===================
Private Sub btnDtyp_Click()
sPathName = ThisWorkbook.Path & "\模板\" & "动态研判分析.doc"
Set WordApp = CreateObject("Word.Application") '生成WORD对象
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Add(sPathName)
With Sheet6
sText = "{ksrq}" '开始日期
sReplace = Format(Range("D1").Value, "YYYY年M月DD日")
WordDoc.Range.Find.Execute sText, False, True, False, False, False, True, 0, False, sReplace, 2
sText = "{jsrq}" '结束日期
sReplace = Format(Range("F1").Value, "YYYY年M月DD日")
WordDoc.Range.Find.Execute sText, False, True, False, False, False, True, 0, False, sReplace, 2
sText = "{zj}" '总计人数
sReplace = .Range("E48").Value
WordDoc.Range.Find.Execute sText, False, True, False, False, False, True, 0, False, sReplace, 2
sText = "{nan}" '男性人数
sReplace = .Range("B33").Value
WordDoc.Range.Find.Execute sText, False, True, False, False, False, True, 0, False, sReplace, 2
sText = "{nv}" '女性人数
sReplace = .Range("B34").Value
WordDoc.Range.Find.Execute sText, False, True, False, False, False, True, 0, False, sReplace, 2
sText = "{jyrs}" '就业人数
sReplace = .Range("B84").Value + .Range("B85").Value
WordDoc.Range.Find.Execute sText, False, True, False, False, False, True, 0, False, sReplace, 2
sText = "{jxrs}" '就学人数
sReplace = .Range("B86").Value
WordDoc.Range.Find.Execute sText, False, True, False, False, False, True, 0, False, sReplace, 2
End With
sFileName = "分析记录(" & Range("D1").Value & "至" & Range("F1").Value & ").doc"
WordApp.ChangeFileOpenDirectory "E:\分析报告\"
WordDoc.SaveAs Filename:=sFileName, FileFormat:=wdFormatDocument
End Sub
VBA实现将EXCEL数据导入WORD表格
给你段示例,你再接着完善你的:
Dim wdApp As Word.Application '定义WORD对象
Dim wdDoc As Word.Document '定义WORD文档对象
Dim wkSheet As Worksheet '定工作表对象
Dim I As Long
'实例化WORD对象
Set wdApp = New Word.Application
'创建WORD文档
Set wdDoc = wdApp.Documents.Add
'给工作表变量赋值
Set wkSheet = ThisWorkbook.Sheets("WriteWord")
'保存新创建的WORD文档
wdDoc.SaveAs ThisWorkbook.Path & "\test.docx"
wdDoc.Close '关闭新创建的WORD文档
With wdApp
'打开WORD文档
.Documents.Open ThisWorkbook.Path & "\test.docx"
'循环将工作表中的记录转换为WORD文档内容
For I = 2 To wkSheet.Range("a1048576").End(xlUp).Row
'题头内容
.Selection.TypeText "亲爱的" & Trim(wkSheet.Cells(I, 1).Value)
'根据性别确定人物称呼
If wkSheet.Cells(I, 2).Value = "男" Then
.Selection.TypeText "先生:"
Else
.Selection.TypeText "女士:"
.... .....
如何利用vba程序在word中调用excel单元格中的数据
'代码已经测试过,请注意保持良好习惯,及时采纳,谢谢。
Sub PasteToWordDoc()
'
' 需要引用MIcrosoft Word 12.0 Object Library(注:12.0是版本号,可以不同)
'
Application.ScreenUpdating = False '关闭屏幕刷新'
Selection.Copy
Dim wdApp As Word.Application, wdDoc As Word.Document
Dim strDocPath As String '全路径文件名
Dim blnNoWd As Boolean, blnNoWdd As Boolean
On Error Resume Next
strDocPath = "C:\Users\wine\Desktop\可ihikhoi年.docm" '如果与Excel工作薄同路径,采用这面的语句也可
'strDocPath = ThisWorkbook.Path & "\可ihikhoi年.docm"
'调用word程序对象
Set wdApp = GetObject(, "Word.Application") '实例化word对象变量
If wdApp Is Nothing Then '判断word程序是否正在运行
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = False
blnNoWd = True
End If
'调用word 文档对象
Set wdDoc = wdApp.Documents(strDocPath)
If wdDoc Is Nothing Then
Set wdDoc = wdApp.Documents.Open(Filename:=strDocPath, Visible:=flase)
blnNoWdd = True
Else
wdDoc.Activate
End If
wdApp.Selection.PasteExcelTable False, False, False
wdDoc.Save
'恢复环境
If blnNoWdd Then wdDoc.Close: Set wdDoc = Nothing
If blnNoWd Then wdApp.Quit: Set wdApp = Nothing
Application.ScreenUpdating = True
On Error GoTo 0
End Sub
转载请注明出处51数据库 » vbaword实例教程 ExcelVBA操作word文件
少年未老丶心已荒凉