Ошибка при попытке закрыть активный документ Word в приложении c # - PullRequest
1 голос
/ 21 декабря 2011

Я использую c # с .net 4.0 Framework и Office 2010

В настоящее время я пытаюсь выяснить, как закрыть уже открытый документ Word.Я сталкиваюсь с ошибкой с этим кодом:

Microsoft.Office.Interop.Word.Application app = (Microsoft.Office.Interop.Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
        foreach (Microsoft.Office.Interop.Word.Document d in app.Documents)
        {
            if (d.FullName.ToLower() == "OOPOR".ToLower())
            {
                object saveOption = WdSaveOptions.wdPromptToSaveChanges;
                object originalFormat = WdOriginalFormat.wdOriginalDocumentFormat;
                object routeDocument = false;
                d.Application.Documents.Close(ref saveOption, ref originalFormat, ref routeDocument);

            }
        }

В настоящее время, когда я запускаю этот код, я не могу попасть в цикл foreach.app.Documents показывает количество «0».и если я устанавливаю точку останова в цикле foreach и смотрю на переменную 'app', она сообщает:

ActiveDocument = '((Microsoft.Office.Interop.Word.ApplicationClass)(app)).ActiveDocument' threw an exception of type 'System.Runtime.InteropServices.COMException' >> 
base {System.Runtime.InteropServices.ExternalException} = {"This command is not available because no document is open."}

Это происходит, даже если у меня есть активный документ word.

1 Ответ

1 голос
/ 22 декабря 2011

Кажется, моя проблема была вызвана конфликтом пользователей и администраторов.

Моему приложению, запущенному с повышенными привилегиями, не удалось увидеть приложение Word.Application и его документы, работающие от имени обычного пользователя.

...