обновить защищенный паролем документ связанных слов в C # - PullRequest
0 голосов
/ 01 марта 2012

Позвольте мне сначала описать проблему.У меня есть это приложение, которое открывает документ Word и обновляет все поля, а затем сохраняет документ в другой папке.Слово документ просто используется в качестве шаблона для отчета.Он заполнен связанным контентом из листа Excel.Все приложение работает, но проблема в том, что документ Excel защищен паролем.когда я обновляю поля документа, приложение останавливается и слово запрашивает пароль.

Когда вы вводите пароль, программа работает так, как рекламируется, вы должны вставить ее более одного раза, даже не зная почему.Но предполагается, что программа работает автономно без участия пользователя.Есть ли способ дать слово паролю, чтобы его не нужно было вводить, либо через код, либо в свойствах документа 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 голосов
/ 01 марта 2012

Получить документ Word, чтобы открыть файл Excel (с паролем) для вас каждый раз, когда он был открыт. В то же время мы также можем успешно закрыть файл Excel из Word.

Поместите это в область макросов 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 и обновит ВСЕ поля в вашем текстовом документе, и вам не нужно будет запрашивать пароль

0 голосов
/ 01 марта 2012

Я думаю, вы можете попытаться позвонить doc.Unprotect(ref Object password), передав свой пароль в качестве аргумента.

Проверьте this article on CodeProject and это на MSDN.

...