Word VBA 学习交流(五) - 青云的日志 - 网易博客
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Word VBA 学习交流(五) - 青云的日志 - 网易博客网易 新闻
微博
邮箱
闪电邮
相册
有道
手机邮
印像派
梦幻人生
更多 博客首页 风格
圈子
活动
话题
找朋友
博客复制
手机博客
短信写博
热点专题
意见反馈
更多>> 相册 摄影展区
每日专题 搜索 搜博文 搜博客 随便看看>>注册 登录 青云客栈这里是我们共同的客栈,欢迎大家常来坐坐! 导航
首页 日志 相册 音乐 收藏 博友 关于我 日志 青云
加博友 关注他
最新日志
纯CSS实现tab选项卡效果javascript+css实现Tab页Javascript中最常用的55个经javascript
常用代码技巧大ASP数据库基本操作2ASP使用Recordset实现分页功博主推荐
相关日志
随机阅读
奶茶进了“油菜地”《走向共和》最后一集·孙中山演讲不曾空过的床比漫画原型更性感火辣的真人美女男人的性幻想对象是种“三合一型”女性全裸!盘点玉女明星的疯狂床戏首页推荐
成龙道歉有点像狡辩?沈阳火灾后对万达九质疑闾丘:30岁的深圳已老了乐嘉:让傻女孩自生自灭中国80后你凭什么买房康熙和苏麻的一世情缘更多>> Word VBA
学习交流(四) 利用ASP输出excel文件一例
Word VBA 学习交流(五)Office办公软件 2008-01-08 21:04:02 阅读52 评论0 字号:大中小 订阅
Word VBA 学习交流资料之五
Application 对象
该对象代表 Microsoft Word 应用程序。Application
对象包含可返回最高级对象的属性和方法(VIP?^_^)。例如,ActiveDocument 属性可返回一个 Document 对象。
使用 Application 对象
使用 Application 属性可返回 Application 对象。下列示例(就是我们说的“例子”)显示 Word 用户名。
MsgBox erName
在使用许多可返回最普通的用户界面对象(例如 ActiveDocument 属性返回的活动文档对象)的属性和方法时,可以不用 Application
对象识别符。例如,可写为 ActiveDocument.PrintOut,而不必写为
Application.ActiveDocument.PrintOut。没有使用 Application
对象识别符的属性和方法被看作是“全局”的。若要在“对象浏览器”中查看全局属性和方法,请单击“类”框中列表顶端的“〈全局〉”(如图)。
说明
若要使用来自另一个应用程序的自动功能(以前称为 OLE 自动功能)来控制 Word,请使用 Visual Basic 的 CreateObject 或
GetObject 函数返回一个 Word Application 对象。下列 Microsoft Excel 示例启动 Word(如果 Word
尚未启动),并打开一篇现有的文档。
Set wrd = GetObject(, "Word.Application")
wrd.Visible = True
wrd.Documents.Open "C:\My Documents\Temp.doc"
Set wrd = Nothing
ActiveDocument 属性
(我错了,我一直以为activedocuemnt是对象,直到写这个时,才发现他是
属性,是application的属性,只不过application可以略罢了。羞啊,具然这个今天才明白。)
返回一个 Document 对象,该对象代表活动文档。如果没有打开的文档,就会导致出错。只读。
示例
本示例显示活动文档的名称,如果没有打开的文档,则显示一条消息。
If Application.Documents.Count >= 1 Then
MsgBox
Else
MsgBox "No documents are open"
End If
本示例将所选内容折叠为插入点,然后创建一个区域,包括选定内容的后面五个字符。
Dim rngTemp As Range
Selection.Collapse Direction:=wdCollapseStart '折叠到开始
Set rngTemp = ActiveDocument.Range(Start:=Selection.Start, _
End:=Selection.Start + 5)
MsgBox rngTemp
本示例在活动文档的开头插入文本,然后打印该文档。
Dim rngTemp As Range
Set rngTemp = ActiveDocument.Range(Start:=0, End:=0)
With rngTemp
.InsertBefore "Company Report"
= "Arial"
.Font.Size = 24
.InsertParagraphAfter
End With
ActiveDocument.PrintOut
Document 对象
代表一篇文档。Document 对象是 Documents 集合中的一个元素。Documents 集合包含 Word 当前打开的所有 Document 对象。
使用 Document 对象
用 Documents(index) 可返回单个的 Document 对象,其中 index
是文档的名称或索引序号。下列示例关闭名为“Report.doc”的文档,并且不保存所做的修改。
Documents("Report.doc").Close SaveChanges:=wdDoNotSaveChanges '带参数
索引序号代表文档在 Documents 集合中的位置。下列示例激活 Documents 集合中的第一篇文档。
Documents(1).Activate
使用 ActiveDocument
可用 ActiveDocument 属性引用处于活动状态的文档。下列示例用 Activate 方法激活名为“Document
1”的文档,然后将页面方向设置为横向,并打印该文档。
Documents("Document1").Activate'激活这个文档,这个有时用,应该版本不同的原因
ActiveDocument.PageSetup.Orientation = wdOrientLandscape
ActiveDocument.PrintOut
Document 属性
(应用于pane(代表一个窗格)对象、range对象、selection对象、window对象的属性)返回一个 Document
对象,该对象与指定窗格、窗口或选定部分相关。只读。
示例
本示例显示选定部分所在的文档名称和路径。
Msgbox Selection.Document.FullName
该示例将活动文档中的窗口设置为 myDoc。然后切换至下一个窗口,并加以拆分。再用 Activate 方法切换回原文档。
Set myDoc = Application.ActiveWindow.Document
If Windows.Count >= 2 Then
Application.ActiveWindow.Next.Activate
Application.ActiveWindow.Split = True
myDoc.Activate
End If
Window 对象
代表一个窗口,诸如滚动条和标尺等文档特征事实上是窗口的属性。Window 对象是 Windows 集合的一个元素。Application 对象的 Windows
集合包含了应用程序中的所有窗口,而 Doc
ument 对象的 Windows 集合只包含显示指定文档的窗口。
使用 Window 对象
可用 Windows(index) 返回一个 Windows 对象,其中 index 为窗口名或索引序号。下列示例最大化 Document1 窗口。
Windows("Document1").WindowState = wdWindowStateMaximize
索引序号指“窗口”菜单中窗口名左侧的数字。下列示例显示 Windows 集合中第一个窗口的标题。
MsgBox Windows(1).Caption
可用 Add 方法或 NewWindow 方法在 Windows 集合中添加一个新窗口。下列每个语句在活动窗口的文档中生成一新窗口。
ActiveDocument.ActiveWindow.NewWindow
NewWindow
Windows.Add
说明
对同一文档打开多个窗口时,窗口标题将出现冒号 (:) 和一个数字。
当将视图转换成打印预览时,便创建了新的窗口。在关闭打印预览时,该窗口便从 Windows 集合中被删除。
以下主要来学习application对象的Activedocument属性的属性,因为他返回的是Document
对象,所以,即是学习document对象的属性。(仔细体会这句话,有题外话的)
Document对象的部分属性(不提及与XML有关的东东,因为我也不会。想了解的,自己看帮助吧。到时,记得带Konggs分享一下噢。)
以上为Document对象的属性部分截图,很多吧?不过,没关系,我们就学常见的几个。
不常见的也会部分贴出,不做为重点,就是知道有这么回事,就OK。
ActiveWindow 属性(非重点)
返回 Window 对象,该对象代表活动窗口(焦点所在的窗口)。如果没有打开的窗口,则会导致出错。只读。
示例
本示例显示活动窗口的标题文本。
Sub WindowCaption()
MsgBox ActiveDocument.ActiveWindow.Caption
End Sub
本示例为活动文档的活动窗口打开一个新窗口,然后平铺所有窗口。
Sub WindowTiled()
Dim wndTileWindow As Window
Set wndTileWindow = ActiveDocument.ActiveWindow.NewWindow
Windows.Arrange ArrangeStyle:=wdTiled
End Sub
本示例拆分第一个文档窗口。
Sub WindowSplit()
Documents(1).ActiveWindow.Split = True
End Sub
Application 属性
不使用对象识别符号时,此属性返回一个 Application 对象,该对象代表 Microsoft Word 应用程序;当使用对象识别符号时,此属性返回一个
Application 对象,该对象代表指定对象的创建者;当对 OLE 自动功能对象应用此属性时,返回该对象的应用程序。
expression.Application
expression 必需。该表达式返回“应用于”列表中的一个对象。
说明
Visual Basic 的 CreateObject 和 GetObject 函数使您可以在 Visual Basic for Applications
工程中访问 OLE 自动功能对象。
示例
本示例使 Microsoft Word 显示滚动条、屏幕提示和状态栏。
With Application
.DisplayScrollBars = True
.DisplayScreenTips = True
.DisplayStatusBar = True
End With
如果正在运行的是 Excel
,本示例将显示 Microsoft Excel 启动路径。
If Tasks.Exists(Name:="Microsoft Excel") = True Then
Set myobject = GetObject("", "Excel.Application")
MsgBox myobject.Application.StartupPath
Set myobject = Nothing
End If
AttachedTemplate 属性
返回一个 Template 对象,该对象代表与活动文档相关联的模板。若要设置该属性,请指定模板名称或返回 Template 对象的表达式。Variant
类型,可读写。
示例
本示例显示与活动文档相关联的模板名称和路径。
Set myTemplate = ActiveDocument.AttachedTemplate
MsgBox myTemplate.Path & Application.PathSeparator _
&
本示例在文档 1 的开始处插入图文场的内容(一个内置“自动图文集”词条)。
Set myRange = Documents(1).Range(0, 0)
Documents(1).AttachedTemplate.AutoTextEntries("Spike") _
.Insert myRange
本示例为活动文档附加名为“Letter.dot”模板。
ActiveDocument.AttachedTemplate = "C:\Templates\Letter.dot"
Background 属性
返回一个 Shape 对象,该对象表示指定文档的背景图像。只读。
注释 只有在 Web 版式视图中才能看到背景。
示例
本示例将活动窗口的 Web 版式视图背景色设为浅灰色。
ActiveDocument.ActiveWindow.View.Type = wdWebView
With ActiveDocument.Background.Fill
.Visible = True
.ForeColor.RGB = RGB(192, 192, 192)
End With
本示例将 Web 版式视图的背景位图图像设为 Bubbles.bmp。
ActiveDocument.ActiveWindow.View.Type = wdWebView
erPicture _
PictureFile:="C:\Windows\Bubbles.bmp"
Bookmarks 属性(重要)
返回一个 Bookmarks 集合。该集合代表某一文档、区域或选定部分中的所有书签。只读。
有关返回集合中单个成员的内容,请参阅返回集合中的对象。
示例
本示例将检索活动文档中第一个书签的首字符和尾字符的位置。
With ActiveDocument.Bookmarks(1)
BookStart = .Start
BookEnd = .End
End With
本示例使用 aMarks() 数组存储活动文档包含的所有书签的名称.
If ActiveDocument.Bookmarks.Count >= 1 Then
ReDim aMarks(ActiveDocument.Bookmarks.Count - 1) '注意这个是减1,因为数组从0开始的
i = 0
For Each aBookmark In ActiveDocument.Bookmarks
aMarks(i) =
i = i + 1
Next aBookmark
End If
本示例将所选内容中用第一个书签(不是文档的标签)标记的文本区域的格式设置为加粗。(作者注:document对象的属性大多数selection对象都有的。)
If Selection.Bookmarks.Count >= 1 Then
Selection.Bookmarks(1).Range.Bold = True
End If
BuiltInDocumentProperties 属性(比较重要)
返回一个 DocumentProperties 集合,该集合代表了指定文档的所有内置的文档属性。
说明:
若要返回代表指定内置文档属性的单一 DocumentProperty 对象,请使用 BuiltinDocumentProperties(ind
ex),其中
index 是一个 WdBuiltInProperty 常量。如需获得有效常量的列表,请参考 Microsoft Visual Basic
对象浏览器。有关返回集合中单个成员的内容,请参阅返回集合中的对象。
如果 Microsoft Word 没有为一个内置的文档属性定义一个值,则读取这个文档属性的 Value 属性时会产生一个错误。
用 CustomDocumentProperties 属性返回自定义文档属性的集合。
示例
本示例在活动文档的末尾插入一个内置属性列表。
Sub ListProperties()
Dim rngDoc As Range
Dim proDoc As DocumentProperty
Set rngDoc = ActiveDocument.Content
rngDoc.Collapse Direction:=wdCollapseEnd
For Each proDoc In ActiveDocument.BuiltInDocumentProperties
With rngDoc
.InsertParagraphAfter
.InsertAfter & "= "
On Error Resume Next
.InsertAfter proDoc.Value
End With
Next
End Sub
本示例显示活动文档中的单词数。
Sub DisplayTotalWords()
Dim intWords As Integer
intWords = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)
MsgBox "This document contains " & intWords & " words."
End Sub
CodeName 属性
返回指定文档的代码名称。String 类型,只读。
说明
代码名称是保存文档的事件宏的模块名。该模块的默认名为“ThisDocument”,可在“工程”窗口中查看该模块。有关使用 Document
对象的事件的内容,请参阅使用 Document 对象的事件。(见下图)
示例
本示例返回活动文档的代码窗口名称。
Msgbox ActiveDocument.CodeName
Characters 属性
返回一个 Characters 集合,该集合代表文档、区域或所选内容中的字符。只读。
有关返回集合中单个成员的内容,请参阅返回集合中的对象。
示 例
本示例显示所选内容的第一个字符。如果没有选定任何内容,则显示插入点后的第一个字符。
char = Selection.Characters(1).Text
MsgBox "The first character is... " & char
本示例返回活动文档首句中的字符数(包括空格)。
numchars = ActiveDocument.Sentences(1).Characters.Count
CommandBars 属性
该属性返回一个 CommandBars 集合,该集合代表 Microsoft Word 中的菜单栏和所有的工具栏。
mandBars
expression 必需。该表达式返回“应用于”列表中的一个对象。
说明
在访问 CommandBars 集合之前,可用 CustomizationContext 属性设置模板或文档上下文。(返回或设置一个 Template 或
Document
对象,该对象代表保存着菜单栏、工具栏和组合键的改动的模板或文档。对应于“工具”菜单“自定义”对话框“命令”选项卡上“保存于”框中的值。可读写。)(即鼠标放到工具栏对应按钮时,对应下面的出现的文本,如果略,则与工具栏的文本一样)
有关返回集合中单独成员的内容,请
参阅返回集合中的对象。
示例
本示例增大所有的命令栏按钮并激活工具提示。
With CommandBars
.LargeButtons = True
.DisplayTooltips = True
End With
本示例在应用程序窗口底部显示“绘图”工具栏。
With CommandBars("Drawing")
.Visible = True
.Position = msoBarBottom
End With
本示例将“版本”命令按钮添至“常用”工具栏。
CustomizationContext = NormalTemplate
CommandBars("Standard").Controls.Add Type:=msoControlButton, _
ID:=2522, Before:=4
CommandBars 集合对象(与上面的属性相关的知识)
一个代表容器应用程序中命令栏的 CommandBar 对象集合。
使用 CommandBars 集合
用 CommandBars 属性可返回 CommandBars 集合。以下示例在 Immediate(直接)
窗口显示每个菜单栏和工具栏的名称和本地名称,并显示一个数值以表明该菜单栏或工具栏是否出现在屏幕上。
For Each cbar in CommandBars
Debug.Print , Local, cbar.Visible
'这个输出到立即窗口,即在VBE 下按CTRl+G就看到了。
Next
用 Add 方法可在集合中添加一个新的命令栏。以下示例创建一个自定义工具栏“Custom1”并将其作为浮动工具栏显示。
Set cbar1 = CommandBars.Add(Name:="Custom1", Position:=msoBarFloating)
cbar1.Visible = True
用 CommandBars(index) 可返回一个 CommandBar 对象;此处 index
是该命令栏的名称或索引号。以下示例将工具栏“Custom1”固定在应用程序窗口的底部。
CommandBars("Custom1").Position = msoBarBottom
注释
您可使用名称或索引号指定容器应用程序中可用菜单栏和工具栏列表的菜单栏或工具栏,但必须使用名称指定菜单、快捷菜单或子菜单(所有这些内容均可由 CommandBar
对象表示)。
如果两个或两个以上的自定义菜单或子菜单具有相同的名称,那么 CommandBars(index)
返回第一个具有该名称的菜单。为确保返回正确的菜单或子菜单,可找到显示该菜单的弹出式控件,然后对该弹出式控件使用 CommandBar
属性以返回代表该菜单的命令栏。
例1:
Sub 替换空行新方法()
Dim a1
Dim b1, c1
Dim d1 As String, astring As String
Dim atim As Long
atim = Timer
Application.ScreenUpdating = False
a1 = ActiveDocument.Content
b1 = Split(a1, Chr(13)) '变为数组
For Each c1 In b1 '在数组中循环
c1 = Trim(c1) '去掉前后的空格,选择性粘贴后,没有软回车
d1 = Replace(c1, Chr(9), "") '如果全部是制表符
If d1 = "" Then
'不作处理
Else
astring = astring + c1 + Chr(13) '累加
End If
Next
ActiveDocument.Content = astring
Application.ScreenUpdating = True
MsgBox Timer – atim
‘2006年5月11日补:缺点是有的“加密文字”(可能不是加密,只是字符集不在常
用的范围里。)为显示为乱字符。
End Sub
例2:引/dispbbs.asp?boardID=23&ID=165869&page=2&px=0
怎么满足如下的全部替换?
意思是Word文档中许多重复的字词是在一起的,比如I I I LOVE LOVE LOVE U U U U之类,要变成I LOVE U。
我的答案是:
Sub 查找()
Dim aword%, i%
On Error Resume Next
Application.ScreenUpdating = False
aword = ActiveDocument.Words.Count
i = 2
With ActiveDocument
Do While i < aword
If RTrim(.Words(i)) = RTrim(.Words(i - 1)) Then
.Words(i - 1).Delete
aword = aword - 1
Else
i = i + 1
End If
Loop
End With
Application.ScreenUpdating = True
End Sub
法二:
(老大的效率高)
Option Compare Text '不区分大小写
Sub Example()
Dim oWord As Range, myRange As Range
On Error GoTo EndSub '忽略错误
Application.ScreenUpdating = False
Set myRange = ActiveDocument.Content
GN: For Each oWord In myRange.Words
With oWord
If Trim(.Text) = Trim(.Next(wdWord).Text) Then
.Delete '删除
myRange.SetRange .Start, myRange.End
GoTo GN
End If
End With
Next
EndSub:
Application.ScreenUpdating = True
End Sub
交流资料之五有不少属性。
资料之五介绍的有点杂,但是因为到了真正的某个对象时,往往就是这样。耐心一下,要相信:冬过已经来了,春天还会远吗?
只有认真的知道一个对象,其它的对象很多都是同理的。就像学习语言一样,但你对一门语言研究的比较深时,再学习另一种语言,会理解的很快的。―――――我认为。
从这一期开始,每个学习交流之后附上习题。下一期的开始来附上这一期的答案。如果你的不方便用文字介绍的话,我会考虑用gif动画,放到Word,到时,大家都可以看到带gif动画的Word文档,我不会考虑用flash等为辅助手段。第一,我不怎么会,第二,太华丽的外表只会把内容吞并。
本期习题(全部用VBA完成):
1.新建一个文档,在文档中输入“本程序的位置位于:”路径。(例如我程序的路径:C:\Program Files\Microsoft
Office\OFFICE11)
2.为这个文档,加一个变量AA。并设变量的值为5。
变量就是:Variables
3.再添加一个内置属性。设名称为:KGS,值为0。
0人 | 分享到: 阅读(52)| 评论(0)| 引用(0) |举报
Word VBA 学习交流(四) 利用ASP输出excel文件一例
历史上的今天
使程序适应各种分辨率2009-01-08 08:47:02 超好用的智能文本框通用函数2009-01-08 08:31:51
相关文章
如何以编程方式保存为单独的文件的各个页面或节的文档2009-12-08 10:28:24 在Visual Basic 6.0
中创建Word/Execl文档2009-12-04 13:17:13
最近读者
登录后,您可以在此留下足迹。
cljie200 gsyxs@12 rhgeng gdwczb
评论
点击登录|昵称:
取消 验证码:换一张
上一页 1... -1-1-1-1-1-1-1... -1下一页 页脚
公司简介 - 联系方法 - 招聘信息 - 客户服务 - 相关法律 - 订阅此博客
网易公司版权所有 ©1997-2010×登录
欢迎通过百度搜索来到青云的博客!
注册登录后,你也可以拥有自己的个人博客,还可以和博友更好的交流。
网易博客欢迎你的加入
请输入登录信息
用户名: 密 码: