這個可能會引發很多問題,所以我會盡量使其具體。我負責支持我的工作使用的第三方應用程序。這個應用程序的功能之一是從.dot文件中拉出來自拉入的數據庫的信息。它使用MERGEFIELD字段來執行此操作。當這個數據被拉入時,它允許正常的日期字段和打印日期字段保留,但創建(我需要的)和保存字段完全搞砸了。它將原始模板創建日期保留在那裏,而不是像模板通常那樣將當前日期插入到文檔創建日期中,並且使字段無效,以便它是純文本而不是創建字段,因此您無法更新它。當創建字段與郵件合併一起使用時,我找不到這是否爲標準行爲的確切答案。我會使用正常的日期,但這些文檔可以在幾天內編輯,最終將其轉換爲PDF以獲得「永久」副本。如果您從程序創建文檔,然後在第二天打開它,它會自動更新日期...不是我們想要的,需要在第一天打開它。是否有可能通過腳本更新Word文檔中的表單域
我有一個頓悟使用PowerShell腳本來更新模板本身的創建。管理這三行做到這一點:
$a = Get-Date
$b = Get-Item "Q:\CUSTOM\DATETEST.dot"
$b.CreationTime = $a
此腳本效果很好,並更新文件信息。但是,爲了使文檔中的實際文字能夠反映出這一點,您必須進入Word,使用F9刷新窗體中的字段,然後保存它。即使使用更新的創建日期,當您在Word中或從其他應用程序中拉出文檔時,單詞文檔文本仍會顯示舊日期,直到刷新並手動保存模板爲止。這些表格不受保護,所以這不是問題。我看到了幾個編輯word文件的powershell腳本,但是無法準確找到刷新日期字段的腳本。我使用修改日期和表單中的savedate字段嘗試了此腳本,但這也需要進入並實際保存表單。在PowerShell或批處理(或任何腳本語言,不在乎這一點)方式有什麼方法可以使我刷新文檔中的表單域然後保存它們,或者任何人都可以想到其他任何方式嗎?我有幾個文件需要這樣做,所以每天早上手動完成也是不切實際的。
編輯:我發現下面的代碼,如下面評論。在這段代碼中,我還發現我需要將Documents.Add更改爲Documents.Open。我會注意到,這有助於按照我需要的方式操作保存日期,但創建仍然是一個謎。
$word=new-object -com Word.Application
$doc=$word.Documents.Add($filename)
$word.Visible=$False
$word.ActiveDocument.Fields.Update()
$doc.SaveAs([REF]$filename)
$doc.Close()
$word.Quit()
找到以下內容,然後在Google中搜索我的確切問題標題後...不知道爲什麼我之前無法搜索,因爲我的搜索類似:'code $ word = new-object -com Word.Application $ doc = $ word.Documents.Add($ filename) $ word.Visible = $ False $ word.ActiveDocument.Fields.Update() $ doc.SaveAs([REF] $ filename) $ doc.Close() $ word.Quit()'這仍然不能正常工作,因爲它不打開並保存模板,而是打開並嘗試保存.docx。仍然接受建議。 –
歡迎來到SO!爲了使內容更具可讀性,請使用您找到的代碼修改原始帖子,然後將其放入評論中。 – Nick
感謝您的建議......並不確定首選方法用於附加新發現的代碼。我已經得到了這一切,但想通了...我仍然寧願使用創建日期,但它只是不會更新,即使與Fields.Update。儘管這不是我的意圖,但是保存者有種做我需要的上面的代碼。 –