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

C# 在C中更新受密码保护的链接word文档#,c#,excel,linked-list,ms-word,password-protection,C#,Excel,Linked List,Ms Word,Password Protection,让我首先描述一下这个问题。我有一个应用程序,它可以打开word文档并更新所有字段,然后将文档保存在另一个文件夹中。word文档只是用作报表的模板。它由excel工作表中的链接内容填充。整个应用程序都可以运行,但问题是excel文档受密码保护。当我更新文档字段时,应用程序停止,word要求输入密码 当你输入密码时,程序就如广告中所说的那样工作,你不得不多次插入密码,你真的不知道为什么。但是,该程序假定在没有用户输入的情况下自动工作。有没有一种方法可以给word提供密码,这样就不必通过代码或word

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

当你输入密码时,程序就如广告中所说的那样工作,你不得不多次插入密码,你真的不知道为什么。但是,该程序假定在没有用户输入的情况下自动工作。有没有一种方法可以给word提供密码,这样就不必通过代码或word文档属性输入密码

下面是我目前的代码,它是用C语言编写的#


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


查看CodeProject和MSDN上的文章。

每次打开Excel文件时,都可以使用Word文档打开该文件(使用密码)。同时,我们还可以成功地从Word关闭Excel文件

把这个放到单词宏区

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文档上的所有字段,并且不应要求您输入文档密码。取消保护是删除文档上的密码。应用程序打开的文档没有密码。包含图形的excel文档为。当我打开它时,当word要求更新信息时,excel会要求输入密码。我如何将其添加到word宏中?很抱歉,我完全没有使用word宏或visual basic的经验。@blackwolfsa打开您的word文档,说明您使用的是程序的一部分。然后在VBA中输入“alt-F11”。在左侧,展开文档名称,双击“此文档”。将上面的内容粘贴到那里,保存并退出。如果我更新密码,仍然要求输入密码。我已将excel部件的密码更改为正确的密码。如果通过普通桌面方式打开word文档并更新字段,会发生什么情况?请尝试我刚才在回答中编辑的新word VBA代码。这将打开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