分享

Word VBA 学习交流(三)

 shuaixinerwei 2012-02-24

Word VBA 学习交流(三)  

2008-01-08 21:00:35|  分类: Office办公软件 |字号 订阅

 

 

Word VBA 学习交流

Range 对象赋给变量

有多种方法将现有的 Range 对象赋给变量。本主题对两种不同的方法进行了阐述。在下列示例中,将 Range 对象赋给变量 Range1 Range2

例如,下列指令(通俗的话就是:下列语句)将活动文档中的第一个和第二个单词赋给变量 Range1 Range2

Set Range1 = ActiveDocument.Words(1)

Set Range2 = ActiveDocument.Words(2)

'注意:

1.    Words对象是Range对象,它不存在Word对象,你可以这样命名:dim word1 as range,,但是dim word1 as word是不行的,也是错的。

2.    Words直观的说就是单词,那么,什么是单词呢?中文中没有单词的概念啊!可以这样来理解,英文的单词是以空格分隔的,所以单词就是二个空格之间的字母加空格。(实验证明,确实是这样的)不过,这与我们的关系不大(因为我们大多处理的是中文)。那么中文的“Word”是怎么回事呢?是词组?还是每个汉字呢?其实我也不知道,我是这样来做的,在VBA中输入如下的程序:

Sub 中文Word()

Dim range1 As Range

    Set range1 = ActiveDocument.Words(1)

    range1.select

    MsgBox range1

End Sub

再新建一个Word,输入这样的的汉字[ a 彼岸赋好 彼岸变量(不包括红色的双引号),按F8分别测试Words(1)Words(2)Words(3)Words(4)Words(5)Words(6)等,发现什么没有。我发现了如下的规律:①标点符号在中文中算是一个Word单位;②字母或者单词后面的空格不算一个Word单位,再英文如果没有结标记则包括后面的空格(例如:"a the as.",则第一个是a ,(注意后面有空格),当然最后的.不包括在前一个as内。所以,以上总共有4Words,你可以用这个来测试。ActiveDocument.Words(1).SelectActiveDocument.Words.count);③除此以外,只有汉字与汉字之间的空格算一个Word单词;④有的Word是一个汉字,有的是二个汉字,可能有的还是三个汉字,这是为什么呢?我们打开微软的输入法,再用“彼岸”及“变量”的拼音输入,可以看到这是一个词组(如下图) 所以我想,有的一个是汉字,有的二个是汉字,他“可能”是根据微软的输入法中的词组定义相一致的。⑤当然,你也可以看看Words集合来看一下这个对象。当然,可能没我说的简单、易懂。当然words对象的不确定性,决定了他使用的频率。如果你看懂我的上面所说,对于words对象基本就OK了。

 

'注意range对象的赋值就是这样set a=b ,变量的赋值就是a=1,但对象就必须这样赋值!(包括任意的对象,Set是对对象赋值的标准语句)

 

将一个 Range 对象变量设置为等于另一个 Range 对象变量

 

下列指令(语句)将名为 Range2 的区域变量设为与 Range1 代表的位置相同。

Set Range2 = Range1   '译为:设置Range2对象 Range1 代表的位置相同

现在两个变量代表同一区域。修改 Range2 的起点、终点或其中的文本将影响 Range1,反之亦然。

 

请注意,以下指令等价于 Range2.Text = Range1.Text。该指令指定 Range2 的默认属性Text 属性)为 Range1 的默认属性。但该指令并不修改其实际引用的对象。

Range2 = Range1

 

Range2 Range1 区域具有相同的内容,但它们可能对应文档中的不同位置,甚至对应不同的文档

'上面这句有点难懂,用程序来说明吧(以后大多是这样,因为我们是学习VBA,只有通过程序来说明内容)

Sub 测试Range1等于Range2()

Dim range1 As Range, range2 As Range

    Set range1 = ActiveDocument.Range(0, 1)   '文档的第一个区域(字)

    Set range2 = ActiveDocument.Range(1, 2)   '文档的第二个区域(字)

    MsgBox range1   '输出第一个字

    MsgBox range2   '输出第二个字

    range2 = range1  '把第一个(字)的区域的字赋值给第二个区域

    MsgBox range2  '输出第二个区域(字)

    '为什么我把字后面加括号,因为我们设置的是区域,就是范围小了点的区域,

    '就一个字的区域,所以,也是字,但区域更准确。

End Sub

当然,与第一例子类似,要新建一个文档,输入一定(只要二个)字来做测试,按F8一步一步来看,也行。

友情提醒:以后大多是这样:新建、输入、然后把代码复制到VBE中来测试。

 

使用 Duplicate(复制) 属性

 

下列指令创建一个Range对象的新副本 Range2,它与Range1有相同的起点、终点和文本。

Set Range2 = Range1.Duplicate

Range1 起点或终点的修改不影响 Range2,反之亦然。但是,由于这两个区域指向文档中的同一位置,对一个区域中文本的修改将影响另一个区域中的文本。

 

'我不知道为什么要使用这个Duplicate属性,上面都说是了Set range2=range1不是好用的很吗?不明白啊,或许以为你会发现的。

 

修改文档的某一部分(以后为细说对象时,说到这些,现在大致了解一些关键的东东

Visual Basic 包含一些对象,可用这些对象修改下列文档元素:字符、单词、句子、段落和节。下表包含与这些文档元素相对应的属性和这些属性返回的对象。

表达式

返回的对象

Words(index)

Range (注意Words返回的是Range对象)

Characters(index)

Range (注意Characters返回的是Range对象)

Sentences(index)

Range (注意Sentences返回的是Range对象)

Paragraphs(index)

Paragraph

Sections(index)

Section    (这个是“节”,就是插入、分隔符中的“节”)

如果使用这些属性时不带索引序号,则返回一个具有相同名称的集合对象。例如,Paragraphs 属性返回 Paragraphs 集合对象。但是如果通过索引序号识别集合中的一项,则返回上表中第二列中的对象。例如Words(1) 返回一个 Range 对象(注意不是Word对象噢。有了一个 Range 对象之后,可以使用任何区域属性或方法修改该 Range 对象。例如,下列指令将所选内容的第一个单词复制到剪贴板

Sub CopyWord()

    Selection.Words(1).Copy

End Sub

'仅供参考!

注释  Paragraphs Sections 集合中的项是该集合的单个成员,而不是 Range 对象。但是(返回 Range 对象的)Range 属性对 Paragraph Section 对象都可用。例如,下列指令将活动文档的第一段复制到剪贴板

Sub CopyParagraph()

    ActiveDocument.Paragraphs(1).Range.Copy

End Sub

上述表格中的所有文档元素属性对 DocumentSelection Range 对象都可用。下列示例阐明了如何使用 DocumentSelection Range 对象的这些属性。

 

下列示例设置活动文档中第一个单词的大小写。

Sub ChangeCase()

    ActiveDocument.Words(1).Case = wdUpperCase

End Sub

 

下列示例将当前节的下边距设为 0.5 英寸前台是通过页边距来做)。

Sub ChangeSectionMargin()

    Selection.Sections(1).PageSetup.BottomMargin = InchesToPoints(0.5)

End Sub

 

下列示例将活动文档的字符间距设为两倍(Content 属性返回一个 Range 对象)。

Sub DoubleSpaceDocument()

    ActiveDocument.Content.ParagraphFormat.Space2  'Space22倍的缩写

End Sub

 

修改一组文档元素

 

若要修改由一组文档元素(字符、单词、句子、段落或节)组成的某区域的文字,需要创建一个 Range 对象。Range 方法根据开始结束位置可创建 Range 对象。例如,下列指令创建一个 Range 对象,该对象引用活动文档的前十个字符。

 

Sub SetRangeForFirstTenCharacters()

    Dim rngTenCharacters As Range

    Set rngTenCharacters = ActiveDocument.Range(Start:=0, End:=10)

End Sub

 

'没记错的话,这个例子以前用过,以后有这种情况,就是一个例子反复使用,但角度不同。

 

使用 Range 对象的 Start End 属性可创建一个新的 Range 对象,该对象引用一组文档元素。例如,下列指令创建一个引用活动文档中前三个单词的 Range 对象 (myRange)

Sub SetRangeForFirstThreeWords()

    Dim docActive As Document

    Dim rngThreeWords As Range

    Set docActive = ActiveDocument     '设置变量

    Set rngThreeWords = docActive.Range(Start:=docActive.Words(1).Start, _

        End:=docActive.Words(3).End)

End Sub

 

下列示例创建一个 Range 对象(aRange),该对象从第二段的开头开始,在第三段之后结束。

 

Sub SetParagraphRange()

    Dim docActive As Document

    Dim rngParagraphs As Range

    Set docActive = ActiveDocument

    Set rngParagraphs = docActive.Range(Start:=docActive.Paragraphs(2).Range.Start, _

        End:=docActive.Paragraphs(3).Range.End)

End Sub

 

引用活动文档元素

 

要引用活动的段落、表格、域或其他文档元素,可使用 Selection 属性返回一个 Selection 对象。通过 Selection 对象,可访问选定内容中的所有段落或第一段。下列示例将边框应用于选定内容的第一段。

Sub BorderAroundFirstParagraph()

    Selection.Paragraphs(1).Borders.Enable = True

End Sub

下列示例将边框应用于选定内容中的每一个段落。

Sub BorderAroundSelection()

    Selection.Paragraphs.Borders.Enable = True

End Sub

下列示例将底纹应用于选定内容中第一张表格的首行。

Sub ShadeTableRow()

    Selection.Tables(1).Rows(1).Shading.Texture = wdTexture10Percent

End Sub

如果选定的内容不包含表格,将导致出错。可使用 Count (计数)属性判定选定内容中是否包含表格。下列示例将底纹应用于选定内容中第一张表格的首行

Sub ShadeTableRow()

    If Selection.Tables.Count >= 1 Then

        Selection.Tables(1).Rows(1).Shading.Texture = wdTexture25Percent

    Else

        MsgBox "Selection doesn't include a table"

    End If

End Sub

下列示例将底纹应用于选定内容中每张表格的首行。For Each...Next 循环用于在选定内容的每张表格中循环。

Sub ShadeAllFirstRowsInTables()

    Dim tblTable As Table

    If Selection.Tables.Count >= 1 Then   '判断选中区域是否存在表格

        For Each tblTable In Selection.Tables  '这是在选中表中循环的标准写法

            tblTable.Rows(1).Shading.Texture = wdTexture30Percent

        Next tblTable

    End If

End Sub

使用Word对象

(这一部分不需要了解太深,以后用到时,还会详细的解释这些。原因有二:第一,这个比较抽象,第二,使用的频率不高。PS: 我的《身份证号码自动提取信息》的原理就是这个知识,但遗憾的是大多人看不懂。)

使用 Application 对象事件

若要创建 Application 对象事件的事件处理器,需要完成下列三个步骤:

在类模块中声明对应于事件的对象变量。

编写特定事件过程。

从其他模块中初始化声明的对象。

一、声明对象变量

在为 Application 对象事件编写过程之前,必须创建新的类模块并声明一个包含事件的 Application 类型对象。例如,假定已创建新的类模块并命名为 EventClassModule。该类模块包含下列代码:

Public WithEvents App As Word.Application

编写事件过程

定义了包含事件的新对象后,它将出现在类模块的“对象”下拉列表框中,然后可为新对象编写事件过程。(在“对象”框中选定新对象后,用于该对象的有效事件将出现在“过程”下拉列表框中)从“过程”下拉列表框中选择一个事件,在类模块中会增加一空过程。

Private Sub App_DocumentChange()

 

End Sub

初始化已声明的对象

在运行过程之前,必须将类模块中已声明的对象(本例中为 App)连接到 Application 对象。您可在任何模块中使用下列代码:

Dim X As New EventClassModule

Sub Register_Event_Handler()

    Set X.App = Word.Application

End Sub

运行 Register_Event_Handler 过程。运行该过程后,类模块中的 App 对象指向 Microsoft Word Application 对象,当事件发生时,将运行类模块中的事件过程。

 

使用 Document 对象的事件

Document 对象支持多种事件,以响应文档状态。若要在名为“ThisDocument”的类模块中编写响应这些事件的过程。可用下列步骤创建事件过程。

在“工程资源管理器”窗口中的 Normal 工程或文档工程下,双击“ThisDocument”。(“ThisDocument”位于“文件夹”视图中的“Microsoft Word 对象”文件夹中)。

从“对象”下拉列表框中选择“Document”。

从“过程”下拉列表框中选择一个事件。

类模块中即增加了一个空子程序。

添加要在事件发生时运行的 Visual Basic 指令。

下例显示了 Normal 工程中的一个 New 事件过程,它在新建一个基于 Normal 模板的文档时运行。

Private Sub Document_New()

    MsgBox "New document was created"

End Sub

下例显示了文档工程中的 Close 事件过程,该过程只在该文档关闭时运行。

Private Sub Document_Close()

    MsgBox "Closing the document"

End Sub

与自动宏不同,Normal 模板中的事件过程没有全局区。例如,Normal 模板中的事件过程只有在附加模板为 Normal 模板时才发生。

如果文档及其附加模板中存在自动宏,则仅运行保存在文档中的自动宏。如果文档及其附加模板中都存在文档事件过程,则两个事件过程都会运行。

使用 ActiveX 控件事件

(这部分主要是VB窗体的使用,对VB熟练的就OK,否则有点吃力,我也吃力。但我想没关系,我虽做不出如花的界面,但功能上能完成,也就行了。)

Microsoft Word 文档可包含 ActiveX 控件。可用“控件工具箱”插入诸如命令按钮、复选框和列表框等 ActiveX 控件。可使用下列步骤添加具有 LostFocus 事件的 ActiveX 复选框控件:

Word 中用鼠标右键单击工具栏,然后单击“控件工具箱”。

单击“复选框”控件。

活动文档中即插入一个复选框控件。

用鼠标右键单击复选框,然后单击“查看代码”。

Word 会切换至“Visual Basic 编辑器”并显示 ThisDocument 类模块,并在“对象”下拉列表框中选定该复选框。

在“过程”下拉列表框中选定 LostFocus 事件。

在类模块中会添加一个空过程。

添加要在事件发生时运行的 Visual Basic 指令。

下列示例显示在焦点离开 CheckBox1 时运行的 LostFocus 事件过程。该宏用 Value 属性显示 CheckBox1 的状态(True 为选定,False 为清除)。

Private Sub CheckBox1_LostFocus()

    MsgBox CheckBox1.Value

End Sub

若要查看事件过程的运行情况,可切换回包含该复选框的 Word 文档。单击“控件工具箱”上的“退出设计模式”按钮。选定或清除复选框,然后单击文档中的其他元素。此时复选框失去焦点,LostFocus 过程开始运行;Word 会显示一个消息框,内容为 True False

Word Word 文档中为 ActiveX 控件应用了 LostFocus GotFocus 事件。“过程”下拉列表框中列出的其他事件在“Microsoft 窗体帮助”中有文档说明。

 

使用控件和对话框

(这一部分介绍的大多是关于窗体有关的东东,他与VB的类似,如果是VB高手,不用看的。像我等低手,有些也看不明白,不过,我觉得无大碍。我们更注重的内涵,而不是华丽的外表)

在文档中使用 ActiveX 控件

如果需要为用户提供复杂的交互方式,使用户可与宏进行直接交互而不受对话框的干扰,类似于将 ActiveX 控件添至自定义对话框,您可将控件直接添至文档。使用下列步骤可将 ActiveX 控件添至文档。有关在 Word 中使用 ActiveX 控件的特定信息,请参阅在文档中使用 ActiveX 控件。

将控件添至文档

若要向文档的图形层添加控件,请单击“控件工具箱”上的控件。若要向文档的文本层添加控件,请按住 Shift 并单击“控件工具箱”上的控件。

设置控件属性

在设计模式下用鼠标右键单击控件,并单击“属性”以显示“属性”窗口。

初始化控件

可在过程中初始化控件。

编写事件过程

所有控件都有一系列预定义的事件。例如,命令按钮有 Click 事件,当用户单击该命令按钮时,该事件发生。您可编写事件发生时运行的事件过程。

运行代码时使用控件的值

可在运行时设置某些属性

创建自定义对话框

通过下列步骤创建自定义对话框:

创建用户窗体

在“Visual Basic 编辑器”的“插入”菜单上,单击“用户窗体”。

将控件添至用户窗体

在“工具箱”中找到要添加的控件,并将控件拖至窗体上。

设置控件属性

在设计模式中用鼠标右键单击控件,并单击“属性”以显示“属性”窗口。

初始化控件

您可在显示窗体之前的过程中初始化控件,或为窗体的 Initialize 事件中添加代码。

编写事件过程

所有控件都有一系列预定义的事件。例如,命令按钮有 Click 事件,在用户单击命令按钮时,该事件发生。您可编写事件发生时运行的事件过程。

显示对话框

使用 Show 方法显示用户窗体。

运行代码时使用控件的值

有些属性可在运行时设置。用户在对话框中为控件设置的值将在对话框关闭时丢失。

显示内置 Word 对话框

(这个要掌握,这个是内置的对话框,与Word关系紧密。)

本主题包含下列信息和示例:

  • 显示内置对话框
  • 返回和更改对话框设置
  • 检查对话框的关闭方式

显示内置对话框

可以显示内置对话框以获取用户输入的信息或使用 Visual Basic for Applications 控制 Microsoft WordDialog 对象的 Show 方法可显示并执行 Word 内置对话框中的任何操作。若要访问特定的内置 Word 对话框,请指定具有 Dialogs 属性的 WdWordDialog 常量。例如,下列宏指令显示打开对话框 (wdDialogFileOpen)

Sub ShowOpenDialog()

    Dialogs(wdDialogFileOpen).Show

End Sub

选定文件并单击确定按钮后,会将文件打开(执行操作)。下列示例显示打印对话框 (wdDialogFilePrint)

Sub ShowPrintDialog()

    Dialogs(wdDialogFilePrint).Show

End Sub

设置 DefaultTab 属性可以访问 Word 对话框中的特定选项卡。下列示例显示(格式菜单中)边框和底纹对话框中的页面边框选项卡。

Sub ShowBorderDialog()

    With Dialogs(wdDialogFormatBordersAndShading)

        .DefaultTab = wdDialogFormatBordersAndShadingTabPageBorder

        '这个偷长,我都晕了。

        .Show

    End With

End Sub

Display 方法显示对话框但不执行对话框的操作。如果使用内置对话框提示用户并返回设置,则该方法很有用。例如,下列宏指令显示(工具菜单中)选项对话框中的用户信息选项卡,然后返回并显示用户名称。

Sub DisplayUserInfoDialog()

    With Dialogs(wdDialogToolsOptionsUserInfo)

        .Display

        MsgBox .Name

    End With

End Sub

注释  您也可使用 Word Visual Basic for Applications 属性显示用户信息而不显示对话框。下列示例使用 Application 对象的 UserName 属性显示应用程序的用户名称,而不显示用户信息对话框。

Sub DisplayUserInfo()

    MsgBox Application.UserName

End Sub

如果在上例中更改用户名称,对话框设置不会发生更改。使用 Execute 方法可以执行对话框中的设置而不显示该对话框。下列示例显示用户信息对话框,如果名称不是空字符串,则可使用 Execute 方法设置对话框。

Sub ShowAndSetUserInfoDialogBox()

    With Dialogs(wdDialogToolsOptionsUserInfo)

        .Display

        If .Name <> "" Then .Execute

    End With

End Sub

注释  使用 Word 中的 VBA 属性和方法可设置用户信息而不显示对话框。下列代码示例通过 Application 对象的 UserName 属性更改用户名称,然后显示用户信息对话框,显示已进行了更改。请注意,更改对话框值时,并非必须显示对话框。

Sub SetUserName()

    Application.UserName = "Jeff Smith"

    Dialogs(wdDialogToolsOptionsUserInfo).Display

End Sub

返回并更改对话框设置

如果可以使用属性或方法返回或更改对话框值,使用 Dialog 对象返回或更改该数值并非很有效。而且在大多数情况下,使用 VBA 代码代替访问 Dialog 对象时,代码更简单并更简短。因此,下列示例同时包含对应的使用相应 VBA 属性执行相同的任务的示例。

使用 Dialog 对象返回或更改对话框设置之前,需要识别单独的对话框。使用 WdWordDialog 常量的 Dialogs 属性可完成该操作。识别 Dialog 对象后,可以返回或设置对话框中的选项。下列示例显示段落对话框的右缩进。

Sub ShowRightIndent()

    Dim dlgParagraph As Dialog

    Set dlgParagraph = Dialogs(wdDialogFormatParagraph)

    MsgBox "Right indent = " & dlgParagraph.RightIndent

End Sub

注释  可以使用 Word VBA 属性和方法显示段落的右缩进设置。下列示例使用 ParagraphFormat 对象的 RightIndent 属性显示插入点位置的段落右缩进。

Sub ShowRightIndexForSelectedParagraph()

    MsgBox Selection.ParagraphFormat.RightIndent

End Sub

类似于返回对话框值,您也可以设置对话框值。下列示例标记段落对话框中的与下段同页复选框。

Sub SetKeepWithNext()

    With Dialogs(wdDialogFormatParagraph)

        .KeepWithNext = 1

        .Execute

    End With

End Sub

注释  您也可以使用 VBA 属性和方法更改段落的右缩进。下列示例使用 ParagraphFormat 对象的 KeepWithNext 属性将所选段落与其后的段落保持在同一页。

Sub SetKeepWithNextForSelectedParagraph()

    Selection.ParagraphFormat.KeepWithNext = True

End Sub

注释  使用 Update 方法可确保对话框的值反映当前值。如果预先在宏中定义了对话框变量,然后需要返回或更改当前设置,则可能必须使用 Update 方法。

检查对话框的关闭方式

Show Display 方法返回的值标明关闭对话框时单击的按钮。下列示例显示分隔符对话框,如果单击确定按钮,则在状态栏中显示一条消息。

Sub DialogBoxButtons()

    If Dialogs(wdDialogInsertBreak).Show = -1 Then

        StatusBar = "Break inserted"

    End If

End Sub

下列表格说明与对话框中的按钮相关联的返回值。

返回值

说明

-2

关闭按钮。

-1

确定按钮。

0(零)

取消按钮。

> 0(零)

命令按钮:1 代表第一个按钮,2 代表第二个按钮,以此类推。

内置对话框参数列表

您可能需要对 Microsoft Word 中的许多内置对话框的选项进行设置。若要设置或返回与 Word 对话框相关的属性,可使用等效的 Visual Basic 属性和方法。

例如,如果需要打印文档,可使用 Word Visual Basic for Applications PrintOut 方法。下列代码使用“打印”对话框中的默认设置打印当前文档。但是,如果不希望使用“打印”对话框中的默认设置,可以使用与 PrintOut 方法相关的参数。

Sub PrintCurrentDocument()

    ThisDocument.PrintOut

End Sub

虽然推荐您使用 VBA 关键字获取或设置对话框选项的值,但许多内置的 Word 对话框也具有可用于设置或获取对话框值的参数。详细信息,请参阅显示内置 Word 对话框。

WdWordDialog 常量 参数列表

wdDialogConnect       DrivePath Password

wdDialogConsistencyChecker (无)

wdDialogControlRun Application

。。。    。。。

 

提醒:以后为不定期的给出一个练习及答案,大家对照学习。

第一期练习题目1

i see

我明白了

i quit

我不干了

let go

放手

me too

我也是

my god

天哪

no way

不行

come on

来吧

hold on

等一等

把以上文字复制到Word中,通过VBA,变换成以下的形式:

i see

i quit

let go

me too

my god

no way

come on

hold on

我明白了

我不干了

放手

我也是

天哪

不行

来吧

等一等

答案:

Sub 换化3()

Dim arange As Range

Dim array1, array2, array3

Dim i%

On Error Resume Next  '忽略错误

 

Application.ScreenUpdating = False '关闭屏幕更新

Set arange = Selection.Range   '设置区域

array1 = Split(arange.Text, Chr(13))

For i = 0 To UBound(array1)

    If i Mod 2 = 0 Then

       'MsgBox array1(i)

       array2 = array1(i) + Chr(13) + array2 '第一行、三行等奇数行

    Else

       array3 = array1(i) + Chr(13) + array3  '第二、四行等偶数行

     End If

Next

   Selection.Delete   '删除所选的内容

   Selection.InsertAfter array2

   Selection.InsertAfter array3

  

   Application.ScreenUpdating = False '开启屏幕更新

  

End Sub

'以上还有简单简懂的方法,在VBE中。

 

第一期练习题目2

i see

i quit

let go

me too

my god

no way

come on

hold on

我明白了

我不干了

放手

我也是

天哪

不行

来吧

等一等

把以上文字复制到Word1中,通过VBA,变换成以下的形式:

i see

我明白了

i quit

我不干了

let go

放手

me too

我也是

my god

天哪

no way

不行

come on

来吧

hold on

等一等

答案:

Sub第二题答案()

Dim arange As Range

Dim array1, array2, array3

Dim i%

On Error Resume Next  '忽略错误

Application.ScreenUpdating = False '关闭屏幕更新

 

Set arange = Selection.Range   '设置区域

array1 = Split(arange.Text, Chr(13))

For i = UBound(array1) / 2 - 1 To 0 Step -1

       array2 = array1(i) + Chr(13) + array1(i + UBound(array1) / 2) + Chr(13) + array2 '

       '注意,他不能保存格式,但对于文字可能是最好的方法之一。

Next

   Selection.Delete   '删除所选的内容

   Selection.InsertAfter array2

 

   Application.ScreenUpdating = False '开启屏幕更新

  

End Sub

 

函数:Weekday 函数

返回一个 Variant (Integer),包含一个整数,代表某个日期是星期几。

语法:Weekday(date, [firstdayofweek])

Weekday 函数语法有下列的命名参数:

部分

描述

date

必要。能够表示日期的 Variant、数值表达式、字符串表达式或它们的组合。如果 date 包含 Null,则返回 Null

Firstdayofweek

可选。指定一星期第一天的常数。如果未予指定,则以 vbSunday 为缺省值。

设置

firstdayofweek 参数有以下设定值:

常数

描述

vbUseSystem

0

使用 NLS API 设置。

VbSunday

1

星期日(缺省值)

vbMonday

2

星期一

vbTuesday

3

星期二

vbWednesday

4

星期三

vbThursday

5

星期四

vbFriday

6

星期五

vbSaturday

7

星期六

 

(以下知识是VBS知识,知道一点也不错!以后可经常摘录一些VBS的知识,但不作说明。因我也只是看得有一点点懂,写不出来的水平。)

 

Folders 集合

包含在一个 Folder 对象内的所有 Folder 对象的集合。

说明

下面的代码举例说明了如何获得一个 Folders 集合,以及如何用 For Each...Next 语句来访问该集合中的每个Folder

Sub 文件夹()

    ShowFolderList ("c:\")

End Sub

Sub ShowFolderList(folderspec)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    Set fc = f.SubFolders

    For Each f1 in fc

        s = s & f1.name

        s = s &  vbCrLf

    Next

    MsgBox s

End Sub

 

总结:交流之三中的Range对象是非常重要的,他可能是新手与老大的区别所在。之三大多知识不是很重要的,主要是消化以前的知识。还有就是常识性的了解一些知识。注意这部分内容请多看帮助。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多