【问题标题】:update password protected linked word document in C#在 C# 中更新受密码保护的链接 word 文档
【发布时间】:2015-02-26 09:13:38
【问题描述】:

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

当您输入密码时,程序会像宣传的那样工作,您必须多次插入密码,不知道为什么。但是该程序应该在没有用户输入的情况下自主工作。有没有办法给 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();

【问题讨论】:

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


    【解决方案1】:

    每次打开 Excel 文件时,您都可以使用 Word 文档(使用密码)打开它。同时,我们也可以从 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 文档中的所有字段,并且不应该要求您输入密码

    【讨论】:

    • 如何将它添加到 word 宏中?抱歉,我完全没有使用 Word 宏或 Visual Basic 的经验。
    • @blackwolfsa 打开您在程序中使用的 Word 文档。然后,'alt-F11' int VBA。在左侧,展开您的文档名称,然后双击“此文档”。将上面的内容粘贴到那里并保存并退出。
    • 如果我更新它仍然要求输入密码。我把excel部分的密码改成了正确的密码。
    • 如果通过普通桌面方式打开word文档并更新字段会怎样?
    • 请尝试我刚刚在答案中编辑的新 Word VBA 代码。这将打开 excel 文档并更新您的 word 文档中的所有字段,并且不应该要求您输入密码
    【解决方案2】:

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

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

    【讨论】:

    • document.unprotect 是删除文档上的密码。应用程序打开的文档没有密码。包含图表的 excel 文档是。当我打开它时,当 word 要求更新信息时,excel 会要求输入密码
    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多