2012-03-01 108 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