Word vbscript行高问题

Word vbscript行高问题,vbscript,ms-word,Vbscript,Ms Word,我只是想让表格的底部“拥抱”这行文字的底部。目前,它似乎是文本下方的额外一行。我将表格中的签名复制到Word中,通过更改行高,我可以使行与底部齐平。行高精确为-0.5。但是,我尝试使用vbscript使用各种不同的行高、设置高度等来实现这一点,但我似乎无法将其粘住。这是我的最后一步!有任何建议吗?:) 这是我的密码: Set objSysInfo = CreateObject("ADSystemInfo") Set WshShell = CreateObject("WScript.Shell"

我只是想让表格的底部“拥抱”这行文字的底部。目前,它似乎是文本下方的额外一行。我将表格中的签名复制到Word中,通过更改行高,我可以使行与底部齐平。行高精确为-0.5。但是,我尝试使用vbscript使用各种不同的行高、设置高度等来实现这一点,但我似乎无法将其粘住。这是我的最后一步!有任何建议吗?:)

这是我的密码:

Set objSysInfo = CreateObject("ADSystemInfo")

Set WshShell = CreateObject("WScript.Shell")

strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)

strName = objUser.FullName
strFirst = objUser.FirstName
strLast = objUser.LastName
strInitials = objUser.Initials
strOffice = objUser.physicalDeliveryOfficeName
strPOBox = objUser.postOfficeBox
strTitle = objUser.Description
strCred = objUser.info
strStreet = objUser.StreetAddress
strLocation = objUser.l
strPostCode = objUser.PostalCode
strPhone = objUser.TelephoneNumber
strMobile = objUser.Mobile
strFax = objUser.FacsimileTelephoneNumber
strEmail = objUser.mail
strCompany = objUser.Company

Set objWord = CreateObject("Word.Application")

Const END_OF_STORY = 6

Const NUMBER_OF_ROWS = 1
Const NUMBER_OF_COLUMNS = 2

Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection

Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature

Set objSignatureEntries = objSignatureObject.EmailSignatureEntries

Set objRange = objDoc.Range()
objDoc.Tables.Add objRange, NUMBER_OF_ROWS, NUMBER_OF_COLUMNS
Set objTable = objDoc.Tables(1)

Dim rngCell
Set rngCell = objTable.Cell(1, 2).Range
objTable.Columns(1).Width = 50
objTable.Columns(2).Width = 360
rngCell.ParagraphFormat.SpaceAfter = 0
rngCell.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
rngCell.ParagraphFormat.LineSpacing = 12
rngCell.Text = strFirst & " " & strInitials & " " & strLast & " | " & _
               strOffice & " | " & strCompany & vbCr
rngCell.Font.Bold = True
rngCell.Font.Name = "Calibri"
rngCell.Font.Size = 10
rngCell.Collapse 0  'wdCollapseEnd
rngCell.MoveEnd 1, -1  'wdCharacter, 1
rngCell.Text = strStreet & " | " & strPOBox & " | " & strLocation & vbCr
rngCell.Font.Bold = False
rngCell.Font.Name = "Calibri"
rngCell.Font.Size = 10
rngCell.Collapse 0  'wdCollapseEnd
rngCell.MoveEnd 1, -1  'wdCharacter, 1
rngCell.Text = vbCr & "Phone: " & strPhone & " | " & "Fax: " & strFax & " | " & "Email: " & vbCr
rngCell.Font.Bold = False
rngCell.Font.Name = "Calibri"
rngCell.Font.Size = 10
rngCell.Collapse 0  'wdCollapseEnd
rngCell.MoveEnd 1, -1  'wdCharacter, 1
Set objLink = objTable.Cell(1, 2).Range
objLink.Hyperlinks.Add rngCell, "mailto:" & strEmail,,,strEmail
objLink.Font.Size = 10
objLink.Font.Name = "Calibri"
objSelection.EndKey END_OF_STORY
objSelection.ParagraphFormat.SpaceAfter = 0

Set objSelection = objDoc.Range()

objSignatureEntries.Add "Reply Signature", objSelection
objSignatureObject.ReplyMessageSignature = "Reply Signature"

objDoc.Saved = True
objWord.Quit

录制宏时,我将HeightRule和Height作为设置表行高度的关键属性。根据问题描述,您似乎缺少
HeightRule
,该规则需要直接设置为
wdRowHeightExactly
(对于VBScript,枚举整数等效值为:2)。例如:

Dim rw as Word.Row
Set rw = objTable.Rows(1)
rw.HeightRule = 2  'wdRowHeightExactly
rw.Height = 72     'InchesToPoints(1)

无助的ol'me解决了我的问题:

objSelection.EndKey END_OF_STORY
objSelection.ParagraphFormat.Alignment = 0
objSelection.ParagraphFormat.SpaceAfter = 0
objSelection.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
objSelection.ParagraphFormat.LineSpacing = 1
objSelection.Font.Size = 1

出于某种原因,这只会使第一列的图像变小。它对行高没有任何影响。实际上,如果我将数字增加到72以上,行高就会增加。如果我将数字更改为32到72之间的任何位置,这并不是什么。如果我将数字减少到32以下,它就会开始生成图像(公司徽标)在第一列中,行的高度更小,并且根本不改变行的高度。您的问题是,如何设置精确的高度。我回答了这个问题,并解释了您可以使用宏记录器来获取此类信息。我在代码片段的前面加上了“例如”,如果您阅读了我代码中的注释,您将看到它设置了InchesToPoints(1)=1”。您需要根据需要进行调整,并且需要了解您想要的设置点数。您可以在Word的VBA编辑器(Alt+F11)即时窗口(Ctrl+G)中执行此操作,方法是键入以下内容,然后按Enter:?InchesToPoints([英寸数])。StackOverflow不是免费的代码编写或教程服务-我将为您提供“免费”教程,但是当你把你在这里得到的信息整合起来时,你需要自己做出一些努力。。。