2012-03-01 109 views
0

讓我先描述一下這個問題。我有這個應用程序打開一個word文檔並更新所有字段,然後將文檔保存在另一個文件夾中。 Word文檔僅用作報告的模板。它充滿了Excel工作表中的鏈接內容。整個應用程序工作,但問題是,Excel文件是密碼保護。當我更新文檔字段時,應用程序停止並且字要求輸入密碼。在C中更新密碼保護鏈接的文檔文件#

當你輸入密碼時,程序按照廣告的方式工作,你必須多次插入它,不知道爲什麼。但是該程序假定在沒有用戶輸入的情況下自主工作。有沒有辦法給詞的密碼,以便它不必輸入,無論是通過代碼或word文檔屬性。

下面是我當前的代碼,這樣做,它在C#

Microsoft.Office.Interop.Word.Application ap = new Microsoft.Office.Interop.Word.Application(); 
     Document doc = ap.Documents.Open(template, ReadOnly: false, Visible: false); 
     doc.Activate(); 
     red_debug.AppendText("opening " + template + "\n"); 
     doc.Fields.UpdateSource(); 
     doc.Fields.Update(); 
     red_debug.AppendText("Saving as " + final + "\n"); 
     doc.SaveAs(final, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument); 
     doc.SaveAs(path + "\\" + name, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF); 
     red_debug.AppendText("Closing word" + "\n"); 
     doc.Close(); 
     ap.Quit(); 

回答

0

獲取Word文檔以便每次打開Excel文件(使用密碼)。同時,我們也可以成功關閉Word中的Excel文件。

將此放入Word宏區域。

Private Sub Document_Open() 

Dim xlApp As Object 
Dim xlWB As Object 
Dim myRange 

Application.DisplayAlerts = wdAlertsNone 

Set xlApp = CreateObject("Excel.Application") 
Set xlWB = xlApp.Workbooks.Open("C:\ExcelFile.xls", , , , "password", "password") 
Set myRange = Selection.Range 

    Selection.WholeStory 
    Selection.Fields.Update 
    myRange.Select 

xlApp.Quit 
Set xlWB = Nothing 
Set xlApp = Nothing 

Application.DisplayAlerts = wdAlertsAll 

End Sub 

這將打開Excel文檔和更新您的Word文檔的所有字段和不應該問你的密碼

+0

如何將此添加到單詞宏?對不起,我完全沒有使用單詞宏或Visual Basic的經驗。 – blackwolfsa 2012-03-02 06:24:59

+0

@blackwolfsa打開您使用程序的一部分的Word文檔。然後,'alt-F11'int VBA。在左側,展開文檔名稱,然後雙擊「此文檔」。將上面的內容粘貼在那裏並保存並退出。 – 2012-03-02 15:24:07

+0

如果我更新它,仍然要求輸入密碼。我改變了密碼,使其成爲正確密碼的一部分。 – blackwolfsa 2012-03-05 06:21:14

0

我想你可以嘗試通過將您的密碼作爲參數調用doc.Unprotect(ref Object password)

檢出 this在CodeProject上的文章和在MSDN上的this

+0

document.unprotect是在一個文檔中刪除密碼。應用程序打開的文檔沒有密碼。包含圖表的Excel文檔是。當我打開它時,excel要求密碼,當單詞要求更新的信息 – blackwolfsa 2012-03-01 07:28:12