Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка Command failed при попытке SaveAs / 25 сообщений из 37, страница 1 из 2
13.01.2015, 17:35
    #38853447
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Мое почтение и благодарность авансом всем.

Сервис (про который я уже задавал много вопросов), написанный на ДотНете, обращается к Ворду. Отличие от предыдущих вопросов в том, что это Ворд 2013, Виндоуз 2012 и ДотНет 4. Кусок кода:

Код: vbnet
1.
2.
3.
4.
5.
Dim o As Word.Application
o = New Word.Application
o.Documents.Add()
...
o.ActiveDocument.SaveAs(...)


На команде SaveAs возникает ошибка Command failed.

Далее в обработчике ошибки я пишу так:

Код: vbnet
1.
2.
3.
4.
5.
6.
Dim dd As Word.Document
For Each dd In o.Documents
    dd.Close(False)
Next
o.Quit()
o = Nothing


На команде Quit процесс Ворда начинает забирать более 98% CPU, и если я его тут же не снимаю, то сервер зависает полностью.
...
Рейтинг: 0 / 0
13.01.2015, 17:37
    #38853453
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Дополнительная информация.

Вручную SaveAs работает.
Сервис бежит под тем же юзером, под которым я захожу вручную.
На месте многоточий в коде ничего особенного нет.
...
Рейтинг: 0 / 0
13.01.2015, 17:43
    #38853461
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Владимир СанычНа месте многоточий в коде ничего особенного нетНе факт. Может все же приведете полный текст строки? Ведь именно на ней ошибка, а Вы информацию давать не хотите :-)
Метод SaveAs имеет аргументы, которые Вы, возможно, не учли должным образом.
...
Рейтинг: 0 / 0
13.01.2015, 17:45
    #38853464
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Владимир Саныч,

И еще: можно выполнить просто
Код: vbnet
1.
o.Quit(0)


и не нужен цикл. Данная строка закроет приложение и все открытые документы без сохранения...
...
Рейтинг: 0 / 0
13.01.2015, 18:01
    #38853497
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
The_PristВладимир СанычНа месте многоточий в коде ничего особенного нетНе факт. Может все же приведете полный текст строки? Ведь именно на ней ошибка, а Вы информацию давать не хотите :-)
Метод SaveAs имеет аргументы, которые Вы, возможно, не учли должным образом.
На месте первого многоточия нет ничего совсем. Я обходил этот код в отладчике при помощи Set Next Statement.

На месте второго многоточия я пробовал разные варианты, ошибка происходит консистентно. Самый простой из вариантов:
o.ActiveDocument.SaveAs("C:\pdf\tmp.docx", Word.WdSaveFormat.wdFormatDocument)

The_PristИ еще: можно выполнить просто
Код: vbnet
1.
o.Quit(0)


и не нужен цикл. Данная строка закроет приложение и все открытые документы без сохранения...
Спасибо, вторая проблема решена. Осталось решить первую...
...
Рейтинг: 0 / 0
13.01.2015, 18:18
    #38853520
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Владимир Санычo.ActiveDocument.SaveAs("C:\pdf\tmp.docx", Word.WdSaveFormat.wdFormatDocument)В пути указываете один формат, а в качестве формата другой. Правильно:
Код: vbnet
1.
o.ActiveDocument.SaveAs("C:\pdf\tmp.docx", Word.WdSaveFormat.wdFormatXMLDocument)


или
Код: vbnet
1.
o.ActiveDocument.SaveAs("C:\pdf\tmp.docx", 12)
...
Рейтинг: 0 / 0
13.01.2015, 18:24
    #38853531
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Попробовал и так тоже. Получил ту же ошибку. Она от этого не зависит.
...
Рейтинг: 0 / 0
13.01.2015, 19:08
    #38853588
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Странно, конечно.
Попробуйте работать не с активным документом, а с назначенным:
Код: vbnet
1.
2.
3.
4.
Dim o As Word.Application, oDoc as Word.Documents
o = New Word.Application
oDoc = o.Documents.Add()
oDoc.SaveAs("C:\pdf\tmp.docx", Word.WdSaveFormat.wdFormatXMLDocument)
...
Рейтинг: 0 / 0
13.01.2015, 19:14
    #38853591
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Спасибо за идею, попробую завтра. Хотя что-то я пессимистичен...
...
Рейтинг: 0 / 0
13.01.2015, 23:27
    #38853675
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Владимир Саныч,

посмотри Ошибка при сохранении в Excel: исключение из HRESULT: 0x800A03EC

кроме того, в прошлых твоих темах про Word постах обсуждались темы о запуске с правами интерактивного пользователя и чтении/записи файла в место, для которого у запускающего пользователя должны быть windows права на чтение-запись и офис доверяет такому месту.

Если все остальное в порядке - проверь windows-права для запускающего пользователя в каталоге, в который ты собираешься писать.
...
Рейтинг: 0 / 0
13.01.2015, 23:38
    #38853677
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Владимир Саныч,

и это, извини за критику:

Код: vbnet
1.
2.
3.
o.Documents.Add()
...
o.ActiveDocument.SaveAs(...)



мое скромное мнение так стоит - для автоматизатора текст
Код: vbnet
1.
o.ActiveDocument


имеет такой смысл - это когда ты искусственный интеллект (вроде вируса) внедряешь в неизвестно какой и откуда взятый, уж точно не тобой созданный, текущий документ.

А если ты его, как бог, собственными ручками за семь дён из мозга изрыгаешь, мне, как тоже автоматизатору, было бы привычней видеть что-то такое:

Код: vbnet
1.
2.
3.
ocreativeDoc = o.Documents.Add()
...
ocreativeDoc.SaveAs
...
Рейтинг: 0 / 0
13.01.2015, 23:55
    #38853684
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
...
Рейтинг: 0 / 0
14.01.2015, 11:47
    #38853930
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Увы.
Вместо ActiveDocument стал работать с присвоенным объектом.
Создал недостающую системную директорию.
Перепроверил, под каким юзером бежит сервис (попробовал оба варианта).
Добавил место создания файла в Trusted locations.
Ошибка упорно остается - Command failed.
...
Рейтинг: 0 / 0
14.01.2015, 12:21
    #38853969
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Посмотрел ErrorCode, нагуглил для него вот это:
http://www.thinglink.org/comexception-errorcodes-2146824090.php
Там предлагают сгрузить и запустить нечто для проверки компьютера. Как-то не хочется пока...
...
Рейтинг: 0 / 0
14.01.2015, 13:30
    #38854106
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Случайно обнаружил, что в тот момент, когда я получаю ошибку, в процессах появляется какой-то PrintIsolationHost. Их там у меня уже несколько торчит. Но они потом через некоторое время исчезают. Проверил принтеры - есть принтер по умолчанию, и даже работает.
...
Рейтинг: 0 / 0
14.01.2015, 15:20
    #38854330
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Нашел ссылку:
http://welp.stethos.com/online-help/PrintIsolationHost.html
Отменил Execute print drivers in isolated processes, как там сказано. Теперь PrintIsolationHost не появляется, но ошибка продолжает быть.
...
Рейтинг: 0 / 0
14.01.2015, 15:35
    #38854354
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Детали ошибкиSystem.Runtime.InteropServices.COMException was unhandled
ErrorCode=-2146824090
HelpLink=wdmain11.chm#36966
HResult=-2146824090
Message=Command failed
Source=Microsoft Word
StackTrace:
at Microsoft.Office.Interop.Word.DocumentClass.SaveAs(Object& FileName, Object& FileFormat, Object& LockComments, Object& Password, Object& AddToRecentFiles, Object& WritePassword, Object& ReadOnlyRecommended, Object& EmbedTrueTypeFonts, Object& SaveNativePictureFormat, Object& SaveFormsData, Object& SaveAsAOCELetter, Object& Encoding, Object& InsertLineBreaks, Object& AllowSubstitutions, Object& LineEnding, Object& AddBiDiMarks)
InnerException:
...
Рейтинг: 0 / 0
14.01.2015, 15:56
    #38854382
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Детали ошибки HelpLink=wdmain11.chm#36966
Нигде не могу найти файл wdmain11.chm - ни у себя, ни в Интернете...
...
Рейтинг: 0 / 0
14.01.2015, 18:10
    #38854550
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Владимир Саныч,

правильно я понимаю, что права запускающего пользователя на каталог ты тоже проверил?
и для пользователя "Сетевые сервисы" права тоже назначены?

Для увеличения числа гипотез хорошо было бы видеть весь код, если это возможно.
Совсем для начала было бы хорошо увидеть как точно выглядит .SaveAs(...).


Залез в объектную модель ворда (2013) и увидел вот что метод - SaveAs - скрытый.
Открыт SaveAs2 (добавлен в версии 2010)
Кроме того, есть скрытый метод saveas2000

пока есть 2 направления мысли
а) проблема с правами на com или каталоги
б) проблема с содержанием документа (например, не идет конвертация в заказанный формат) или состояниемворда как com-объекта

для эксперимента предлагаю провести такие тесты:

0) открыть в тестируемом "сервисе" документ, содержащий vba-модуль с публичной процедурой и за пустить ее через Application.Run
процедура должна пытаться писать "из под ворда" в целевой каталог простой файлик, содержащий нолик или единичку с использованием "стандартных" средств fso - textfile

если этот эксперимент не проходит - надо дальше надавливать на права

1) попробовать сделать saveas документа с предельно простым содержанием (нолик или единичка или даже просто пустой документ)
без форматирования в максимально простом формате типа текстового

может быть, эксперименты такого сорта помогут уточнить направление дальнейших раскопок.
...
Рейтинг: 0 / 0
14.01.2015, 18:29
    #38854558
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
boobyправильно я понимаю, что права запускающего пользователя на каталог ты тоже проверил?
Уже было. Тот же пользователь, под которым я захожу вручную. Создать файл в этом каталоге вручную могу.

boobyОткрыт SaveAs2 (добавлен в версии 2010)
Кроме того, есть скрытый метод saveas2000
Попробовал оба. Результат тот же, включая все детали ошибки (приведенные мной выше).

boobyСовсем для начала было бы хорошо увидеть как точно выглядит .SaveAs(...).boobyили даже просто пустой документ
Уже было. Именно это и делаю. Вот весь код:
Код: vbnet
1.
2.
3.
4.
Dim o As Word.Application, dd As Word.Document
o = New Word.Application
dd = o.Documents.Add()
dd.SaveAs("C:\pdf\tmp.docx", 12)
...
Рейтинг: 0 / 0
14.01.2015, 18:43
    #38854564
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Владимир Санычboobyправильно я понимаю, что права запускающего пользователя на каталог ты тоже проверил?
Уже было. Тот же пользователь, под которым я захожу вручную. Создать файл в этом каталоге вручную могу.

boobyОткрыт SaveAs2 (добавлен в версии 2010)
Кроме того, есть скрытый метод saveas2000
Попробовал оба. Результат тот же, включая все детали ошибки (приведенные мной выше).

boobyСовсем для начала было бы хорошо увидеть как точно выглядит .SaveAs(...).boobyили даже просто пустой документ
Уже было. Именно это и делаю. Вот весь код:
Код: vbnet
1.
2.
3.
4.
Dim o As Word.Application, dd As Word.Document
o = New Word.Application
dd = o.Documents.Add()
dd.SaveAs("C:\pdf\tmp.docx", 12)



остается интересным эксперимент с записью из vba-мароса текстового файла с использованием fso


вероятно, результат не изменится, но как насчет dd.SaveAs("C:\pdf\tmp.fl", 16)
кроме того, вместо o = New Word.Application я бы поискал createObject("Word.Application")

а если вместо dd.SaveAs сказать dd.Close(False),
то все нормально завершится - без ошибок?
...
Рейтинг: 0 / 0
14.01.2015, 18:54
    #38854577
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
boobyостается интересным эксперимент с записью из vba-мароса текстового файла с использованием fso
С этим я попробую разобраться завтра.

boobyвероятно, результат не изменится, но как насчет dd.SaveAs("C:\pdf\tmp.fl", 16)
кроме того, вместо o = New Word.Application я бы поискал createObject("Word.Application")
Оба эксперимента проделал, всё без изменений.

boobyа если вместо dd.SaveAs сказать dd.Close(False),
то все нормально завершится - без ошибок?
Проверил - да, без ошибок.
...
Рейтинг: 0 / 0
14.01.2015, 22:29
    #38854675
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
boobyс использованием "стандартных" средств fso - textfile
А можно пример такого кода? Я привык при создании файлов из-под VBA считать стандартными другие средства...
...
Рейтинг: 0 / 0
14.01.2015, 22:43
    #38854680
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
да, меня тут гонят с компа.
сегодня позже, как вернут доступ. Надеюсь, в пределах часа.
...
Рейтинг: 0 / 0
14.01.2015, 23:31
    #38854695
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Command failed при попытке SaveAs
Не торопись, я завтра с утра все равно в бегах, вернусь к середине дня.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка Command failed при попытке SaveAs / 25 сообщений из 37, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]