您可以使用字段和宏來做到這一點。該字段將創建值,並且宏將更新它們以應對更改。
假設您正在使用文檔屬性狀態,如上所述。如果值爲「DRAFT」,表格中的文本將爲「This is a draft」,如果是其他內容,文本將爲「這不是草稿」。對於這些屬性,單詞可能會產生一些衝突,所以我要做的第一件事就是測試。將您的媒體資源設置爲DRAFT,然後創建一個字段以確保Word正在閱讀它。
任何地方,可以在文檔類型:
[Ctrl+F9] DOCPROPERTY Status
這將導致文本看起來像
{DOCPROPERTY Status}
但要注意,你必須用Ctrl + F9以獲得特殊字段括號。
現在切換字段代碼(選擇,右鍵單擊並選擇切換字段代碼)。如果它變成了草稿,說草稿你準備好了。如果沒有,你可能不會按照Word要你的方式來設置屬性。我這樣做的方法是轉到高級屬性,單擊自定義選項卡,查找列表中的狀態,添加值,然後單擊添加,以便它出現在下面。可能有其他的方式,但是可行。
一旦你已經受夠了那場成功的代碼,創建您的表一個新的,看起來像這樣(請記住,所有支架都用Ctrl + F9創建):
{ IF { COMPARE { DOCPROPERTY Status } = "DRAFT" } = 1 "This is a draft" "This is not a draft" }
If語句比較compare語句的值爲1,兩個帶引號的字符串反映了if語句的計算結果爲true時將出現的內容以及計算結果爲false時出現的內容。切換字段代碼以查看您獲得的內容。
然後,您可以創建一個小宏來爲您更新它們,因此您不必手動更新每個宏。像這樣的東西應該工作:
Public Sub UpdateAllFields()
Dim objDoc as Document
Dim objSect As Section
Dim objHeader As HeaderFooter, objFooter As HeaderFooter
Set objDoc = ActiveDocument
objDoc.Fields.Update
For Each objSect In objDoc.Sections
For Each objHeader In objSect.Headers
objHeader.Range.Fields.Update
Next objHeader
For Each objFooter In objSect.Footers
objFooter.Range.Fields.Update
Next objFooter
Next objSect
End Sub
我誤解並沒有意識到應用到這些表的顏色變化,因此增加一些事。
可以使用該字段更改字體顏色。更改上面的字段,使其看起來像這樣(記住關於Ctrl + F9)(爲了可讀性,我添加了一些換行符,不要在你的字段中包含這些字符。把它全部在一行上):
{ IF { COMPARE { DOCPROPERTY Status } = "DRAFT" } = 1
{ QUOTE "This is a draft" \*Charformat }
{ QUOTE "This is not a draft" \*Charformat } }
然後選擇每個反過來報價領域和應用任何字體格式需要。您也可以用這種方式應用突出顯示;我認爲這不足以滿足您對整個單元格的遮蔽需求,但您可以嘗試一下,看看是否可以避免採取其他措施。
如果你一定要遮蔭整個小區,比你需要另一個宏。像這樣的東西應該這樣做:
Sub ChangeCol()
Dim objDoc As Document
Dim objTable As Table, objCell As Cell
Dim objFld As Field
Set objDoc = ActiveDocument
For Each objFld In objDoc.Fields
If objFld.result.Information(wdWithInTable) = True And _
objFld.Code Like "*IF*" And _
objFld.Code Like "*DOCPROPERTY Status*" Then
If objDoc.CustomDocumentProperties("Status").Value = "DRAFT" Then
objFld.result.Cells(1).Shading.BackgroundPatternColor = wdColorRed
Else: objFld.result.Cells(1).Shading.BackgroundPatternColor = wdColorAutomatic
End If
End If
Next objFld
End Sub
只需運行隨着UpdateFields宏來保持同步(或寫第三宏,同時觸發他們的,所以你不要忘了)。
您可以使用表格單元格中的字段嗎?您可以設置一個條件字段來檢查文檔變量的狀態(我假設屬性也是如此)。如果你對文檔有很大的控制權,我可以提供一個更全面的答案。 – Christina 2014-10-30 18:52:25
是的:我可以自己定義標題。如果你能讓我知道如何做到這一點,我一定會感激。在此先感謝,Lukas – luke 2014-11-01 14:11:16