在C#中更新密码保护的链接word文档

时间:2012-03-01 06:08:38

标签: c# excel linked-list ms-word password-protection

首先让我来描述一下这个问题。我有这个应用程序打开word文档并更新所有字段,然后将文档保存在另一个文件夹中。 word文档仅用作报告的模板。它充满了excel工作表中的链接内容。整个应用程序工作,但问题是excel文档受密码保护。当我更新文档字段时,应用程序停止并且word要求输入密码。

当你输入密码时,程序按照宣传的方式工作,你必须多次插入它,不知道为什么。但该程序假设在没有用户输入的情况下自主工作。有没有办法说出密码,以便不必通过代码或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();

2 个答案:

答案 0 :(得分:0)

我认为您可以尝试通过传递密码作为参数来调用doc.Unprotect(ref Object password)

查看有关CodeProject的 this文章和MSDN上的this

答案 1 :(得分: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文档中的所有字段,并且不应该要求您输入密码