Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Работа с файлом Word в с# Необработанное исключение типа “System.Runtime.InteropServices.COMException”

#c_sharp


public static Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
        public static string generalfile = Application.StartupPath + "\\Shablon\\1.docx";
// файл-шаблон
        public static string newfile = Application.StartupPath + "\\" + Program.namePath
+ "\\протокол1.docx"; // новый файл на основе файла-шаблона
        public static Object fileName = generalfile;
        public static Object missing = Type.Missing;
        public void OpenFile()
        {
            app.Documents.Open(ref fileName);
        }
        public void SaveCloseFile()
        {
            app.ActiveDocument.SaveAs(newfile);
            app.ActiveDocument.Close();
            app.Quit();
        }
        public void FindReplace(string str_old, string str_new)
        {
            Microsoft.Office.Interop.Word.Find find = app.Selection.Find;

            find.Text = str_old; // текст поиска
            find.Replacement.Text = str_new; // текст замены

            find.Execute(FindText: Type.Missing, MatchCase: false, MatchWholeWord:
false, MatchWildcards: false,
                        MatchSoundsLike: missing, MatchAllWordForms: false, Forward:
true, Wrap: Microsoft.Office.Interop.Word.WdFindWrap.wdFindContinue,
                        Format: false, ReplaceWith: missing, Replace: Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll);

        }


При повторном создание файла ругается на метод openFile исключением System.Runtime.InteropServices.COMException.

Сам вызов:

OpenFile();
FindReplace("name", Program.namePath);
FindReplace("Predsedatel", predsedatel_name + " - " + dolzhnostPred);
FindReplace("V1", textBox6.Text.Trim());
FindReplace("V2", textBox7.Text.Trim());
FindReplace("V3", textBox8.Text.Trim());
FindReplace("Com1", comissionname[0] + " - " + dolzhnostCom[0]);
FindReplace("Com2", comissionname[1] + " - " + dolzhnostCom[1]);
FindReplace("Com3", comissionname[2] + " - " + dolzhnostCom[2]);
FindReplace("Com4", comissionname[3] + " - " + dolzhnostCom[3]);
FindReplace("Secretar", secretar_name + " - " + dolzhnostSec);
FindReplace("ocenkaGos", Program.ocenkaGos + " %");
SaveCloseFile();

    


Ответы

Ответ 1



public static Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); Жил был Word... app.Quit(); ... но его закрыли ... app.Documents.Open(ref fileName); а потом попросили открыть файл... но было уже некому... В общем, перенеси app = new Microsoft.Office.Interop.Word.Application(); туда, где начинается работа - это где-то раньше вызова OpenFile.

Комментариев нет:

Отправить комментарий