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

Сервис (про который я уже задавал много вопросов), написанный на ДотНете, обращается к Ворду. Отличие от предыдущих вопросов в том, что это Ворд 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
Ошибка Command failed при попытке SaveAs
    #38853453
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнительная информация.

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

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


и не нужен цикл. Данная строка закроет приложение и все открытые документы без сохранения...
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38853497
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Ошибка Command failed при попытке SaveAs
    #38853520
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч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
Ошибка Command failed при попытке SaveAs
    #38853531
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал и так тоже. Получил ту же ошибку. Она от этого не зависит.
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38853588
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, конечно.
Попробуйте работать не с активным документом, а с назначенным:
Код: 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
Ошибка Command failed при попытке SaveAs
    #38853591
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за идею, попробую завтра. Хотя что-то я пессимистичен...
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38853675
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

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

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

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

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

Код: 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
Ошибка Command failed при попытке SaveAs
    #38853684
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38853930
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы.
Вместо ActiveDocument стал работать с присвоенным объектом.
Создал недостающую системную директорию.
Перепроверил, под каким юзером бежит сервис (попробовал оба варианта).
Добавил место создания файла в Trusted locations.
Ошибка упорно остается - Command failed.
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38853969
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел ErrorCode, нагуглил для него вот это:
http://www.thinglink.org/comexception-errorcodes-2146824090.php
Там предлагают сгрузить и запустить нечто для проверки компьютера. Как-то не хочется пока...
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854106
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Случайно обнаружил, что в тот момент, когда я получаю ошибку, в процессах появляется какой-то PrintIsolationHost. Их там у меня уже несколько торчит. Но они потом через некоторое время исчезают. Проверил принтеры - есть принтер по умолчанию, и даже работает.
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854330
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел ссылку:
http://welp.stethos.com/online-help/PrintIsolationHost.html
Отменил Execute print drivers in isolated processes, как там сказано. Теперь PrintIsolationHost не появляется, но ошибка продолжает быть.
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854354
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Детали ошибки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
Ошибка Command failed при попытке SaveAs
    #38854382
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Детали ошибки HelpLink=wdmain11.chm#36966
Нигде не могу найти файл wdmain11.chm - ни у себя, ни в Интернете...
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854550
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

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

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


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

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

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

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

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

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

может быть, эксперименты такого сорта помогут уточнить направление дальнейших раскопок.
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854558
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Ошибка Command failed при попытке SaveAs
    #38854564
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч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
Ошибка Command failed при попытке SaveAs
    #38854577
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Ошибка Command failed при попытке SaveAs
    #38854675
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyс использованием "стандартных" средств fso - textfile
А можно пример такого кода? Я привык при создании файлов из-под VBA считать стандартными другие средства...
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854680
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, меня тут гонят с компа.
сегодня позже, как вернут доступ. Надеюсь, в пределах часа.
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854695
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не торопись, я завтра с утра все равно в бегах, вернусь к середине дня.
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка Command failed при попытке SaveAs
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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