您好,RC。您知道,没有人愿意听到这样一句话:“这并不像看上去那么糟糕”。毕竟,当您发现您的业务合作伙伴一直在挪用公司资金购买彩票时,这是他常说的一句话。当您瞥见医生正准备给您扎针时,医生也会说:“这并不像看上去那么糟糕”(在此情况下,他是对的:情况往往要比看上去更糟糕)。是的,在向您介绍可右对齐 Microsoft Word 表格中的列的脚本之前,脚本专家会说:“这并不像看上去那么糟糕”。
当然,不同之处在于脚本专家所说的是真心话。正如您将要看到的,右对齐 Word 中的表格列只需几行代码。唯一的问题是,右对齐表格列是很难的,除非您的文档中实际上有一个表格。不管怎样,在 Word 中创建表格(尽管不是特别难)确实需要数量相当多的代码,尤其是当您要创建类似于系统管理员可能创建的那种表格时。但别紧张。尽管脚本看起来很大且很复杂,但您感兴趣的部分却非常简单。
换句话说,这并不像看上去那么糟糕:
Const wdAlignParagraphRight = 2
Const NUMBER_OF_ROWS = 1
Const NUMBER_OF_COLUMNS = 3
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objRange = objDoc.Range()
objDoc.Tables.Add objRange, NUMBER_OF_ROWS, NUMBER_OF_COLUMNS
Set objTable = objDoc.Tables(1)
x=2
objTable.Cell(1, 1).Range.Text = "Process Name"
objTable.Cell(1, 2).Range.text = "Process ID"
objTable.Cell(1, 3).Range.text = "Handle Count"
strComputer = "."
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process")
For Each objItem in colItems
If x > 1 Then
objTable.Rows.Add()
End If
objTable.Cell(x, 1).Range.Text = objItem.Name
objTable.Cell(x, 2).Range.text = objItem.ProcessID
objTable.Cell(x, 3).Range.text = objItem.HandleCount
x = x + 1
Next
objDoc.Tables(1).Columns(3).Select
Set objSelection = objWord.Selection
objSelection.ParagraphFormat.Alignment = wdAlignParagraphRight
该脚本所执行的操作是收集当前在计算机上运行的所有进程的信息,然后将这些进程信息显示在一个 Word 表格中。这就是几乎前面的所有代码所要解决的问题:它将创建一个 Word 文档,获取进程信息,然后创建一个表格并用进程信息填充行和列。完成这一步后(换句话说,在文档中创建表格后),只需三行代码即可右对齐其中的一列。
|
注意:我们要解释用来在 Microsoft Word 中创建表格的所有代码吗?不,我们在此不对其进行解释:这超过了您好,脚本专家!专栏所涵盖的范围。不过,我们确实有一个 Office Space 专栏,其中对该过程进行了较为详细的解释。
脚本专家不会让您那样一知半解即可。 |
那么,在文档中确实有了一个表格后,我们要做什么呢?这样,第一步是选择其中的一个表格列。在示例表格中,我们在第 3 列中显示进程句柄数,我们之所以这样做是因为句柄数是一个数字,而数字始终是很适于右对齐的。我们通过以下代码来选择表格中的第 3 列:
objDoc.Tables(1).Columns(3).Select
这行代码应该说是相当简单了。变量 objDoc 是对 Word 文档的对象引用,我们在脚本开头已创建了该对象引用:
Set objDoc = objWord.Documents.Add()
Tables(1) 只是表明我们要处理 Tables 集合中的第一个表格,该集合包含文档中的所有表格。同样,Columns(3) 表明我们特意要处理表格 1 中的第 3 列。Select 表明我们要选择表格 1 中的第 3 列。明白了吗?我们就是这么打算的。
选取文本后,我们需要创建 Selection 对象的一个实例以便处理该文本。这就是下面的代码所要执行的操作:
Set objSelection = objWord.Selection
这就意味着,我们现在只需右对齐所选文本中的所有段落即可:
objSelection.ParagraphFormat.Alignment = wdAlignParagraphRight
为便于理解,现说明如下:wdAlignParagraphRight 是我们在脚本开头定义的常量(其值为 2);我们通过该常量来告诉 Word 我们要右对齐选定的文本。显然,我们可以指定其他对齐选项,这包括:
| • |
wdAlignParagraphCenter(值 1),文本居中。 |
| • |
wdAlignParagraphLeft(值 0),文本左对齐。 |
| • |
wdAlignParagraphJustify(值 3),文本两端对齐。 |
当我们运行此脚本时会发生什么情况呢?将发生以下情况:
应该还记得,我们曾经告诉过您:它的确不像看上去那么糟糕,难道不是吗?