word 宏 实例
这个宏的基本功能如下:对一个文件中的每行都进行转换。
转换前:1 1001 aaa aaa 0
转换后:1,1001,"aaa","aaa",0
Sub convert()
Selection.find.ClearFormatting
Selection.find.Replacement.ClearFormatting
With Selection.find
.Text = "^t"
.Replacement.Text = ","
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.find.Execute replace:=wdReplaceAll
Selection.HomeKey Unit:=wdStory
For i = 1 To ActiveDocument.Paragraphs.Count
Selection.HomeKey Unit:=wdLine
Selection.find.ClearFormatting
Selection.find.Replacement.ClearFormatting
With Selection.find
.Text = ","
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
End With
Selection.find.Execute
Selection.find.Execute
With Selection.find
.Text = ","
.Replacement.Text = ","""
.Forward = True
.Wrap = wdFindContinue
End With
With Selection
If .find.Forward = True Then
.Collapse Direction:=wdCollapseStart
Else
.Collapse Direction:=wdCollapseEnd
End If
.find.Execute replace:=wdReplaceOne
If .find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Else
.Collapse Direction:=wdCollapseStart
End If
.find.Execute
End With
With Selection.find
.Text = ","
.Replacement.Text = ""","""
.Forward = True
.Wrap = wdFindContinue
End With
With Selection
If .find.Forward = True Then
.Collapse Direction:=wdCollapseStart
Else
.Collapse Direction:=wdCollapseEnd
End If
.find.Execute replace:=wdReplaceOne
If .find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Else
.Collapse Direction:=wdCollapseStart
End If
.find.Execute
End With
With Selection.find
.Text = ","
.Replacement.Text = ""","
.Forward = True
.Wrap = wdFindContinue
End With
With Selection
If .find.Forward = True Then
.Collapse Direction:=wdCollapseStart
Else
.Collapse Direction:=wdCollapseEnd
End If
.find.Execute replace:=wdReplaceOne
If .find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Else
.Collapse Direction:=wdCollapseStart
End If
.find.Execute
End With
Next i
End Sub
参考了以下文档,以下转载:
Application对象
- - - - - - - - - - - - - - - - - - - -
(301) Application.ActivePrinter ‘获取当前打印机
(302) Application.Height '当前应用程序文档的高度
(303) Application.Width ‘当前应用程序文档的宽度
(304) Application.Build ‘获取Word版本号和编译序号
(305) Application.Caption ‘当前应用程序名
(306) Application.DefaultSaveFormat '返回空字符串,表示Word文档
(307) Application.DisplayRecentFiles '返回是否显示最近使用的文档的状态
(308) Application.Documents.Count '返回当前打开的文档数
(309) Application.FontNames.Count ‘返回当前可用的字体数
(310) Application.Left ‘返回当前文档的水平位置
(311) Application.MacroContainer.FullName '返回当前文档名,包括所在路径
(312) Application.NormalTemplate.FullName '返回文档标准模板名称及所在位置
(313) Application.RecentFiles.Count '返回最近打开的文档数目
(314) Application.System.CountryRegion '返回应用程序所在的地区代码
(315) Application.System.FreeDiskSpace ‘返回应用程序所在磁盘可用空间
(316) Application.System.HorizontalResolution '返回显示器的水平分辨率
(317) Application.System.VerticalResolution '返回显示器的垂直分辨率
(318) Application.System.LanguageDesignation '返回系统所使用的语言
(319) Application.System.MathCoprocessorInstalled ‘返回系统是否安装了数学协处理器
(320) Application.System.OperatingSystem ‘返回当前操作系统名
(321) Application.System.ProcessorType '返回计算机处理器名
(322) Application.System.Version ‘返回操作系统的版本号
(323) Application.Templates.Count '返回应用程序所使用的模板数
(324) Application.UserName '返回应用程序用户名
(325) Application.Version ‘返回应用程序的版本号
- - - - - - - - - - - - - - - - - - - - - -
Documents/Document对象
- - - - - - - - - - - - - - - - - - - - - -
(326) ActiveDocument.AttachedTemplate.FullName '返回当前文档采用的模板名及模板所在位置
(327) ActiveDocument.Bookmarks.Count '返回当前文档中的书签数
(328) ActiveDocument.Characters.Count '返回当前文档的字符数
(329) ActiveDocument.CodeName ‘返回当前文档的代码名称
(330) ActiveDocument.Comments.Count ‘返回当前文档中的评论数
(331) ActiveDocument.Endnotes.Count '返回当前文档中的尾注数
(332) ActiveDocument.Fields.Count '返回当前文档中的域数目
(333) ActiveDocument.Footnotes.Count ‘返回当前文档中的脚注数
(334) ActiveDocument.FullName '返回当前文档的全名及所在位置
(335) ActiveDocument.HasPassword '当前文档是否有密码保护
(336) ActiveDocument.Hyperlinks.Count '返回当前文档中的链接数
(337) ActiveDocument.Indexes.Count '返回当前文档中的索引数
(338) ActiveDocument.ListParagraphs.Count '返回当前文档中项目编号或项目符号数
(339) ActiveDocument.ListTemplates.Count '返回当前文档中使用的列表模板数
(340) ActiveDocument.Paragraphs.Count '返回当前文档中的段落数
(341) ActiveDocument.Password=XXX '设置打开文件使用的密码
(342) ActiveDocument.ReadOnly '获取当前文档是否为只读属性
(343) ActiveDocument.Saved '当前文档是否被保存
(344) ActiveDocument.Sections.Count '当前文档中的节数
(345) ActiveDocument.Sentences.Count ‘当前文档中的语句数
(346) ActiveDocument.Shapes.Count '当前文档中的形状数
(347) ActiveDocument.Styles.Count '当前文档中的样式数
(348) ActiveDocument.Tables.Count ‘当前文档中的表格数
(349) ActiveDocument.TablesOfAuthorities.Count ‘返回当前文档中的引文目录数
(350) ActiveDocument.TablesOfAuthoritiesCategories.Count ‘返回当前文档中引文目录类别数
(351) ActiveDocument.TablesOfContents.Count ‘返回当前文档中的目录数
(352) ActiveDocument.TablesOfFigures.Count '返回当前文档中的图表目录数
- - - - - - - - - - - - - - - - - - - - - -
Paragraphs/Paragraph对象
- - - - - - - - - - - - - - - - - - - - - -
(353) Selection.Paragraphs.Count '返回所选区域的段落数
(354) Selection.Paragraphs.First '返回所选区域中的第一段
(355) ActiveDocument.Paragraphs(1).LeftIndent '返回当前文档中第一段的左缩进值
(356) ActiveDocument.Paragraphs(1).LineSpacing '返回当前文档中第一段的行距
(357) ActiveDocument.Paragraphs(1).OutlineLevel ‘返回或设置当前文档中第一段的大纲级别
(358) ActiveDocument.Paragraphs(1).RightIndent ‘返回当前文档中第一段的右缩进量
(359) ActiveDocument.Paragraphs(1).SpaceBefore '返回当前文档中第一段的段前间距
(360) ActiveDocument.Paragraphs(1).SpaceAfter ‘返回当前文档中第一段的段后间距
(361) ActiveDocument.Paragraphs(1).Range.Text '返回当前文档中第一段的内容
(362) ActiveDocument.Paragraphs(1).Range.Style.NameLocal '返回当前文档中第一段应用的样式名
(363) ActiveDocument.Paragraphs(1).Range.Style.Descrīption '返回当前文档中第一段所应用样式的详细描述
(364) ActiveDocument.Paragraphs(1).Range.Style.Font.Name '返回当前文档中第一段所应用样式的字体名
(365) ActiveDocument.Paragraphs(1).Range.Style.Font.NameFarEast '返回或设置一种东亚字体名
(366) ActiveDocument.Paragraphs(1).Range.Style.Font.Size '返回或设置当前文档中第一段所应用样式的字体大小
(367) ActiveDocument.Paragraphs(1).Range.Style.Font.Spacing '返回或设置字符间距
(368) Selection.Words.Count '所选区域的字数
- - - - - - - - - - - - -
Sentences对象
- - - - - - - - - - - - -
(369) Selection.Sentences.Item(1) '所选区域中的第一句的内容
- - - - - - - - - -
Words对象
- - - - - - - - - -
(371) ActiveDocument.Words(1).Select '选择当前文档中的第一个词
(372) ActiveDocument.Range.Words(1).InsertAfter "我爱你!" '在当前文档中的第一个词后插入“我爱你”
- - - - - - - - - - - - -
Characters对象
- - - - - - - - - - - - -
(373) Selection.Characters.Count '当前文档中所选区域的字符数
(374) ActiveDocument.Paragraphs(1).Range.InsertParagraphAfter '在当前文档的第一段之后插入一个新段落
- - - - - - - - - - - - - - - - - -
Sections/Section对象
- - - - - - - - - - - - - - - - - -
(375) ActiveDocument.Sections.First '当前文档的第一节
(376) ActiveDocument.Sections.First.PageSetup.BottomMargin '当前文档第一节所在页的底边距
(377) ActiveDocument.Sections.First.PageSetup.LeftMargin '当前文档第一节所在页的左边距
(378) ActiveDocument.Sections.First.PageSetup.RightMargin '当前文档第一节所在页的右边距
(379) ActiveDocument.Sections.First.PageSetup.TopMargin '当前文档第一节所在页的顶边距
(380) ActiveDocument.Sections.First.PageSetup.PaperSize '返回或设置当前文档第一节所在页的大小
(381) ActiveDocument.Sections.First.PageSetup.PageHeight '返回或设置当前文档第一节所在页的高度
(382) ActiveDocument.Sections.First.PageSetup.PageWidth '返回或设置当前文档第一节所在页的宽度
(383) ActiveDocument.Sections.Add Range:=myRange '在当前文档中添加新节
(384) ActiveDocument.Sections.Item(2) '当前文档中的第二节
(385) ActiveDocument.Sections.Last.Range.InsertAfter "文档结束!" '在当前文档中最后一节的结尾添加文字“文档结束!”
- - - - - - - - - -
Range对象
- - - - - - - - - -
(386) ActiveDocument.Range(Start:=0, End:=10) '表示当前文档前10个字符所组成的一个Range对象
(387) Set myRange = ActiveDocument.Range( _
Start:=ActiveDocument.Paragraphs(2).Range.Start, _
End:=ActiveDocument.Paragraphs(4).Range.End) '将当前文档第2段至第4段设置为一个Range对象
(388) ActiveDocument.Paragraphs(1).Range.Copy '复制当前文档中的第一段
(389) Selection.Copy
Documents.Add.Content.Paste '复制所选内容到新文档中
(390) ActiveDocument.Bookmarks("Book1").Copy Name:="Book2" '将Book2书签复制Book1书签标记的位置
(391) Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=4 '将所选内容移至文档中的第4行
(392) Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext '将所选内容移至下一个表格的第1个单元格
(393) Selection.Range.AutoFormat '为所选内容套用格式
(394) ActiveDocument.Content.Font.Name = "Arial" '将当前文档的字体设置为斜体
(395) ActiveDocument.Content.Select
Selection.Delete '将当前文档中的内容删除
- - - - -
其它
- - - - -
(396) Documents.Add '添加一个新文档
(397) Set myTable = ActiveDocument.Tables.Add(Selection.Range, 2, 2) '在当前文档所选区域添加一个2行2列的表格
(398) Open "C:"my.txt" For Input As #1 '打开一个用于输入的文件并令其编号为1
(399) Line Input #1, TextLine '读取被打开用于输入且编号为1的文件
(400) Close #1 '关闭编号为1的文件