Меню

Word saveas ошибка команды

   nikolas2605

30.12.13 — 00:02

Здравствуйте. Пишу такой код (привожу фрагмент) по созданию договоров и их сохранению в Word

Договор = Документы.ЗаказПокупателя.ПолучитьМакет(«ДоговорНаОборудование1»);

     MSWord = Договор.Получить();

Попытка

Doc = MSWord.Application.Documents(1);

         Doc.Activate();

         Replace = Doc.Content.Find;

         FindText = «<Директор>»;

         MatchCase = Ложь;                                                        

         MatchWholeWord = Истина;

         MatchWildcards = Ложь;

         MatchSoundsLike = Неопределено;

         MatchAllWordForms = Неопределено;

          Forward = Истина;

          Wrap = Неопределено;

          Format_ = Ложь;

          РезультатСклонения=Падеж(Фио,-1 ,3,»231″);

                    ReplaceWith = РезультатСклонения;

          Replace.Execute(FindText,MatchCase,MatchWholeWord,MatchWildcards,MatchSoundsLike,MatchAllWordForms,Forward,Wrap,Format_,ReplaceWith);

          MSWord.Application.Visible = Истина;

    
    MSWord.Activate();

    ИмяФайла = Результат.Контрагент.НаименованиеПолное;

    Каталог = «D:LocalDogovorOborudovanie»;

    MSWord.SaveAS(Каталог + «» + ИмяФайла + «(оборудование)»,16);

          
Исключение

    Сообщить(ОписаниеОшибки());

    MSWord.Application.Quit();

КонецПопытки;

Иногда меня выкидывает с ошибкой, что {Документ.ЗаказПокупателя.МодульМенеджера(11636)}: Ошибка при вызове метода контекста (SaveAS): Произошла исключительная ситуация (Microsoft Word): Ошибка команды

В чём тут дело, может кто подскажет? Если контрагент — ИП или розничный покупатель, договор нормально сохраняется; если ООО — через раз. Конфигурация «Управление небольшой фирмой» ред.1.4. Заранее спасибо.

   Vexcel

1 — 30.12.13 — 00:08

(0) ну наверно что то не нравиться в имени файла, может какой ни будь странный символ, или вовсе NULL приходит

Поставь в сообщение с ошибкой ещё и ИмяФайла

   nikolas2605

2 — 30.12.13 — 00:09

(1) Пробовал кавычки убирать у ООО-шек — пока толку нет

   nikolas2605

3 — 30.12.13 — 00:12

Например, ООО «ИТБ-Семигорье» меня выкидывает, а ООО «Ланч» сохраняет…

   nikolas2605

4 — 30.12.13 — 00:15

Иду в отладчик, получаю, что когда меня выкидывает, программа пишет: метод объекта не обнаружен SaveAs. Куда смотреть далее, ведь такое не на всех контрагентах?

   alexei366

5 — 30.12.13 — 00:19

(4) Так мож обращайся к объекту документа а не приложения.

Я через метод объекта документа делаю сохранение а не через метод приложения (я даж честно говоря и не задумывался и не смотрел что у приложения ворда тож такой метод есть), и удаляю все запрещенные виндой символы в имени файла перед сохранением

   nikolas2605

6 — 30.12.13 — 00:24

(4)Извини за глупый вопрос, это как? Я пока начинающий, набираюсь опыта. Примеров не надо, просто объясни

   alexei366

7 — 30.12.13 — 00:54

Doc.SaveAS(…)

   alexei366

8 — 30.12.13 — 00:56

(7) И вообще вроде метод не SaveAS а  SaveAs

   alexei366

9 — 30.12.13 — 01:00

   nikolas2605

10 — 30.12.13 — 01:01

(9) Спасибо. сейчас смотрю. Пока и так выкинуло.

   nikolas2605

11 — 30.12.13 — 01:07

Ссылка полезная. Если вычисляю выражение MSWord = Договор.Получить(), то мне на MSWord выдаёт свойства, а не методы…

   alexei366

12 — 30.12.13 — 01:18

(11) А ты какбудто у какогонить объекта видел чтоб отладчик методы подсказвал?

   alexei366

13 — 30.12.13 — 01:19

(11) А табличные части как заполнять будешь? или у тебя их нет?

   nikolas2605

14 — 30.12.13 — 01:23

(12) Не видел. Пока ещё первый раз так печать реализую.

(13) Нет

   nikolas2605

15 — 30.12.13 — 01:27

Какие символы виндой недопустимы?

   alexei366

16 — 30.12.13 — 01:39

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

   alexei366

17 — 30.12.13 — 01:40

(14) Чот я у т в коде печати не вижу

   nikolas2605

18 — 30.12.13 — 01:43

(17) пока не написал печать

   nikolas2605

19 — 30.12.13 — 01:50

(17)Что программе не понравилось? Написал так:

Doc.SaveAS(Каталог + «» + ИмяФайла,16);

Сохранила!

   nikolas2605

20 — 30.12.13 — 01:57

Рано радовался

   nikolas2605

21 — 30.12.13 — 02:23

Сделал так:

ИмяФайла = Результат.Контрагент.Наименование;

И так как наименование — это краткое наименование контрагента, винда не пропускала кавычки в нём. Убрал кавычки в кратком наименовании в контрагенте, в полном оставил. Сохраняет.

   alexei366

22 — 30.12.13 — 02:26

(21) Ты чо тупишь, сделай отдельную функцию типа :

Функция ПреобразоватьСтрокуВИмяФайла(ВходнаяСтрока)

ВходнаяСтрока = СтрЗаменить(ВходнаяСтрока,»:»,»»);

ВходнаяСтрока = СтрЗаменить(ВходнаяСтрока,»»»»,»»);

……..

Возврат ВходнаяСтрока;

КонецФункции

   alexei366

23 — 30.12.13 — 02:27

(22) И Соответственно

ИмяФайла = ПреобразоватьСтрокуВИмяФайла(Результат.Контрагент.Наименование);

   alexei366

24 — 30.12.13 — 02:27

(22) Ток в объявлении вот так

Функция ПреобразоватьСтрокуВИмяФайла(Знач ВходнаяСтрока)

   nikolas2605

25 — 30.12.13 — 11:21

(24)Сработало. Спасибо. С наступающим Новым Годом!

  

alexei366

26 — 30.12.13 — 11:31

(25) Ага давай, тя тоже

  • Remove From My Forums
  • Общие обсуждения

  • Здравствуйте.  Пытаюсь создать и сохранить документ  в нужном мне месте.

    Word.Application wordapp;
                wordapp = new Word.Application();
                Word.Table table;
                wordapp.Visible = false;
                object missing = System.Reflection.Missing.Value;
                wordapp.Documents.Add(ref missing, false, Word.WdNewDocumentType.wdNewBlankDocument, true);
                Word.Document document = wordapp.Documents[1];
    
                Word.Paragraph wordparagraph = (Word.Paragraph)document.Paragraphs[1];
                wordparagraph.Range.Text = "lalalala";
                object fileName = @"c:1privetprivet.doc";
    		document.SaveAs(ref fileName, ref missing,
                            ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing,
                            ref missing, ref missing);

    после команды SaveAs открывается окно word «Сохранение файла», где нужно указать
    вручную местоположение файла (хотя я явно указал куда нужно сохранять). пробовал и параметры функции менять и местоположение файла, но толку 0.

    Подскажите как мне сохранить выбранный мной документ в нужное место?

    Microsoft.Office.Interop.Word v 12.0.0

    Office 2010

    .net 4.0

    • Изменен тип

      31 марта 2014 г. 7:47
      Тема неаткина

Using

MS Office 2007

VS 2010 — Pointing frame work to 3.5

Windows 7

referenced NET Component Word 12.0 dll in C# code

——————————————————-

I wrote a console application to create PDF ..when I am running this application from my user (like double click) it is creating PDFs

But when I configured the same console application as Windoows Service (run as User (me), as SYSTEM, As Local same result)..I am getting exception from SaveAs command

Can any body help me? Obviously it is missing some thing when the application is running as a Windows Service. What it is?

Some dll? DCOM settings? another security? what it is I can’t think straungt? Help me!!!

Exception:

System.Runtime.InteropServices.COMException (0x800A1066): Command failed
   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)
   at SnapshotReportGenerator.reportWrkThread.createReports(ArrayList ScreenData, String newStorePath, Int64 jobId, Int64 recId, String ifileName, Int64 queueId) in C:C#SnapshotReportGeneratorSnapshotReportGeneratorreportWrkThread.cs:line 224

Code:

object fileFormat = Word.WdSaveFormat.wdFormatPDF;

                        oDoc.SaveAs(ref fileName,
                                     ref fileFormat,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing);

  • Moved by

    Saturday, July 28, 2012 1:16 PM
    not using VSTO technology (From:Visual Studio Tools for Office)

Using

MS Office 2007

VS 2010 — Pointing frame work to 3.5

Windows 7

referenced NET Component Word 12.0 dll in C# code

——————————————————-

I wrote a console application to create PDF ..when I am running this application from my user (like double click) it is creating PDFs

But when I configured the same console application as Windoows Service (run as User (me), as SYSTEM, As Local same result)..I am getting exception from SaveAs command

Can any body help me? Obviously it is missing some thing when the application is running as a Windows Service. What it is?

Some dll? DCOM settings? another security? what it is I can’t think straungt? Help me!!!

Exception:

System.Runtime.InteropServices.COMException (0x800A1066): Command failed
   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)
   at SnapshotReportGenerator.reportWrkThread.createReports(ArrayList ScreenData, String newStorePath, Int64 jobId, Int64 recId, String ifileName, Int64 queueId) in C:C#SnapshotReportGeneratorSnapshotReportGeneratorreportWrkThread.cs:line 224

Code:

object fileFormat = Word.WdSaveFormat.wdFormatPDF;

                        oDoc.SaveAs(ref fileName,
                                     ref fileFormat,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing,
                                     ref oMissing);

  • Moved by

    Saturday, July 28, 2012 1:16 PM
    not using VSTO technology (From:Visual Studio Tools for Office)

Ermak27

4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

1

1C 8.x

25.06.2019, 11:26. Показов 8332. Ответов 17

Метки нет (Все метки)


Добрый день!
Подскажите как сохранить шаблон word. У меня ругается на SaveAs

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 ПутьКШаблонам =СокрЛП(Константы.КвартплатаПутьКШаблонам.Получить());
     Если ДокПечати=СокрЛП("Квитанция2") Тогда
         ИмяШаблона = СокрЛП("Квитанция2.dot");
     КонецЕсли;
 
     ИмяФайла = "E:file.doc";
    
    Word= Новый COMОбъект("Word.Application");
    Докум=Word.Documents.Add(""+ПутьКШаблонам+ИмяШаблона);
    Word=Докум;
    Докум=Word.Application.Documents(1);
    Докум.Activate();
    Докум.Content.Copy();
    фл=ложь;
    сч=0;
    
    Для Каждого Стр из Ведомость Цикл
        сч=сч+1;
        фл=Истина;
        
         ЛС=СокрЛП(Стр.ЛицевойСчет)+Стр.ЛицевойСчет.Регион.КодСбер;
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<ЛС"+сч+">",0,1,0,,,1,,0,Формат(ЛС,"ЧГ=0"));
         Исключение
         КонецПопытки;
         
         ФИО_1=ТРег(СокрЛП(Стр.ЛицевойСчет.ОтветственныйКвартиросъемщик));
         ФИО_1_Кратко=ОбщегоНазначения.ФамилияИнициалыФизЛица(ФИО_1);
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<ФИО"+сч+">",0,1,0,,,1,,0,СокрЛП(ФИО_1_Кратко));
         Исключение
         КонецПопытки;
         
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<АДРЕС"+сч+">",0,1,0,,,1,,0,СокрЛП(Стр.Адрес));
         Исключение
         КонецПопытки;
 
        Если сч=1 Тогда
            сч=0;
            Докум = Word.Range(0,0);
            Докум.InsertBreak();
            Докум = Word.Range(0,0);
            Докум.Paste();
        Конецесли; 
    КонецЦикла;
    Докум.SaveAs(ИмяФайла);
Word.Application.Quit();

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

25.06.2019, 12:42

2

Процедура клиент, сервер ?
Есть доступ до папки у пользователя ?
1С пробовал от админа запускать ?
И что за ошибка хоть ?



0



4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

25.06.2019, 14:39

 [ТС]

3

1. Процедура сервер
2. Есть доступ
3. Работаю по админом
4. Метод объекта не обнаружен (SaveAs)
Докум.SaveAs(ИмяФайла);



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

25.06.2019, 16:17

4

Нельзя сохранять фалы на сервере, нужно перенести на клиент.



0



4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

25.06.2019, 16:18

 [ТС]

5

можешь показать



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

25.06.2019, 16:24

6

Ermak27, полностью процедуру всю переноси на клиент. А данные для заполнения вытаскивай через функции на сервере несли понадобится.

Перед процедурой у тебя написано &НаСервере, меняй это на &НаКлиенте. Повалятся ошибки, такие как обращение к константе например и начинай их исправлять потихоньку.



0



4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

25.06.2019, 16:44

 [ТС]

7

Я тебя не так понял на счёт сервера. У меня вообщем ничего не стоит перед процедурой. Нет &НаСервере и &НаКлиенте. У меня база крутиться на sql сервере



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

25.06.2019, 16:52

8

Ermak27, хорошо. Напиши тогда где находится процедура. В модуле формы или модуле объекта ?



0



Ermak27

4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

25.06.2019, 17:06

 [ТС]

9

Модуле формы. Процедура срабатывает при нажатии кнопки

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Процедура ОсновныеДействияФормыКвитанция(Кнопка)
    // Вставить содержимое обработчика.
    Печать("Квитанция2");
КонецПроцедуры
 
Процедура Печать(ДокПечати="")
    ПутьКШаблонам =СокрЛП(Константы.КвартплатаПутьКШаблонам.Получить());
     Если ДокПечати=СокрЛП("Квитанция2") Тогда
         ИмяШаблона = СокрЛП("Квитанция2.dot");
     КонецЕсли;
 
     ИмяФайла = "E:file.doc";
    
    Word= Новый COMОбъект("Word.Application");
    Докум=Word.Documents.Add(""+ПутьКШаблонам+ИмяШаблона);
    Word=Докум;
    Докум=Word.Application.Documents(1);
    Докум.Activate();
    Докум.Content.Copy();
    фл=ложь;
    сч=0;
    
    Для Каждого Стр из Ведомость Цикл
        сч=сч+1;
        фл=Истина;
        
         ЛС=СокрЛП(Стр.ЛицевойСчет)+Стр.ЛицевойСчет.Регион.КодСбер;
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<ЛС"+сч+">",0,1,0,,,1,,0,Формат(ЛС,"ЧГ=0"));
         Исключение
         КонецПопытки;
         
         ФИО_1=ТРег(СокрЛП(Стр.ЛицевойСчет.ОтветственныйКвартиросъемщик));
         ФИО_1_Кратко=ОбщегоНазначения.ФамилияИнициалыФизЛица(ФИО_1);
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<ФИО"+сч+">",0,1,0,,,1,,0,СокрЛП(ФИО_1_Кратко));
         Исключение
         КонецПопытки;
         
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<АДРЕС"+сч+">",0,1,0,,,1,,0,СокрЛП(Стр.Адрес));
         Исключение
         КонецПопытки;
 
        Если сч=1 Тогда
            сч=0;
            Докум = Word.Range(0,0);
            Докум.InsertBreak();
            Докум = Word.Range(0,0);
            Докум.Paste();
        Конецесли;  
    КонецЦикла;
    Докум.SaveAs(ИмяФайла);
Word.Application.Quit();
 
КонецПроцедуры



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

25.06.2019, 18:16

10

Попробуй так прописать

Докум.Documents.SaveAs(ИмяФайла);



0



1117 / 671 / 195

Регистрация: 22.04.2013

Сообщений: 5,072

Записей в блоге: 1

25.06.2019, 22:48

11

Цитата
Сообщение от Ermak27
Посмотреть сообщение

У меня вообщем ничего не стоит перед процедурой. Нет &НаСервере и &НаКлиенте.

ну не стоит и не стоит. где процедура выполняется, когда не стоит? в воздухе? вряд ли.
посмотрите, есть ли у вас на сервере диск Е, куда вы пытаетесь записать, и есть ли права на запись на него



0



4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

26.06.2019, 08:40

 [ТС]

12

dggrom, выдаёт ошибку Поле объекта не обнаружено (Documents)
Докум.Documents.SaveAs(ИмяФайла);

Добавлено через 2 минуты
Yulunga, Я же писал что диск есть, права есть



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

26.06.2019, 10:02

13

Yulunga, у него метод записи самой не видет.

Ermak27, что за конфигурация, какие формы, управляемые или нет ?



0



4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

26.06.2019, 10:05

 [ТС]

14

dggrom, Не управляемые, Обычное приложение



0



1117 / 671 / 195

Регистрация: 22.04.2013

Сообщений: 5,072

Записей в блоге: 1

26.06.2019, 13:01

15

по мне так проблема в этом:
Докум=Word…
Word=Докум;
Докум=Word…

запутал с какой-то целью. поэтому и нет там сейвас, что применяется не к тому к чему надо. чехарда. имена переменных закончились?



0



4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

26.06.2019, 13:51

 [ТС]

16

Yulunga, я закомментировал Word=Докум;, теперь выдаёт ошибку Метод объекта не обнаружен (Range)
Докум = Word.Range(0,0);



0



Yulunga

1117 / 671 / 195

Регистрация: 22.04.2013

Сообщений: 5,072

Записей в блоге: 1

26.06.2019, 17:47

17

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Word =  Новый COMОбъект("Word.Application");
    word.Visible = 0;    
    word.Application.DisplayAlerts = ложь;
        
    Word.Documents.ADD();
    DocWord = Word.Documents.Open(ПутькФайлу);
    DocWord.Activate();
    
    DocWord.sections.item(1).footers.item(1).Range.Text = "Мой любимый документ";
 
    Word.Application.DisplayAlerts =-1; 
    
    Word.ActiveDocument.saveas(ПутькФайлу);
  
    word.Application.quit();

ну вот чем не код для рыбы. сейвас должен быть для активного документа



0



Ermak27

4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

27.06.2019, 11:22

 [ТС]

18

Yulunga, как мне мой код поправить?
Мне нужно чтобы два значение выводились на страницу.
Например: Страницу ворда я делю по пополам, получается при печати А5. Т.е есть в ТЗ 4 значение, то вордовский документ должен вывести две страницы, на каждой странице два значения. Приложил картинку.

Код который в самом начале, он так и выводит как надо, но встала задача сохранить эти вордовские документы по индексу, вот тут проблема и появилась у меня. Вчера я переделал немного код
Создал форму с типом ActiveDocument. Написал код который сохраняет мне вордовские документы но значение заносит в каждый лист, а мне нужно два значения на лист.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
 
    
    Файл = "E:doc";
    //таблица
    Таблица = Новый ТаблицаЗначений();   // создаем таблицу    
    //колонки
    Таблица.Колонки.Добавить("Наименование"); //добавляем нетипизированную колонку
    Таблица.Колонки.Добавить("Индекс"); //добавляем колонку со строгим указанием типа     
    //строчки
    Строка = Таблица.Добавить();
    Строка.Наименование = "Текст1";  //указываем произвольное значение
    Строка.Индекс = "185001";   //указываем произвольное значение
    Строка = Таблица.Добавить();
    Строка.Наименование = "Текст11"; //указываем произвольное значение
    Строка.Индекс = "185001";   //указываем произвольное значение
    Строка = Таблица.Добавить();
    Строка.Наименование = "Текст2";  //указываем произвольное значение
    Строка.Индекс = "185002";   //указываем произвольное значение
    Строка = Таблица.Добавить();
    Строка.Наименование = "Текст22"; //указываем произвольное значение
    Строка.Индекс = "185002";   //указываем произвольное значение
    Строка = Таблица.Добавить();
    Строка.Наименование = "Текст3";  //указываем произвольное значение
    Строка.Индекс = "185003";   //указываем произвольное значение
    Строка = Таблица.Добавить();
    Строка.Наименование = "Текст33"; //указываем произвольное значение  
    Строка.Индекс = "185003";   //указываем произвольное значение
    Строка = Таблица.Добавить();   
    Строка.Наименование = "Текст333";    //указываем произвольное значение  
    Строка.Индекс = "185003";   //указываем произвольное значение 
    
    
    ТабДокумент  = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ";
    
    АктивныйДокумент = ПолучитьМакет("Макет");
    КомОбъект = АктивныйДокумент.Получить();
    
    
    Word = КомОбъект.Application;
    Док=Word.Documents(1);
    // Отключим проверку грамматики и вывод информации о грамматических ошибках.
    Док.GrammarChecked=0;
    Док.ShowGrammaticalErrors=0;
    
    Док.Activate();
    //Файл = "E:doc" + Индекс1 + "_" + КолЗаписей + ".doc";
    Word.Selection.WholeStory();
    Word.Selection.Copy();
    
    Счетчик = 0;
    
    Индекс1 = "";
    КолЗаписей = 0;
    
    //обход всей таблицы
    Для каждого Стр из Таблица Цикл
        Счетчик = Счетчик + 1;
 
        Если Индекс1 <> Стр.Индекс Тогда
            Если НЕ Индекс1=""  Тогда
                ЗаписатьФайл (Док,КолЗаписей,Индекс1,Файл); 
            КонецЕсли;
                
            ТабДокумент  = Новый ТабличныйДокумент;
            ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ";
            
            АктивныйДокумент = ПолучитьМакет("Макет");
            КомОбъект = АктивныйДокумент.Получить();
            
            
            Word = КомОбъект.Application;
            Док=Word.Documents(1);
            // Отключим проверку грамматики и вывод информации о грамматических ошибках.
            Док.GrammarChecked=0;
            Док.ShowGrammaticalErrors=0;
            
            Док.Activate();
            //Файл = "E:doc" + Индекс1 + "_" + КолЗаписей + ".doc";
            Word.Selection.WholeStory();
            Word.Selection.Copy();
            
            
            КолЗаписей = 0;
        КонецЕсли;         
        КолЗаписей = КолЗаписей + 1;
        
        Замена = Док.Content.Find;
        Замена.Execute("ЛС"+Счетчик,  Ложь, Истина, Ложь, , , Истина, , Ложь, Стр.Наименование);
        Замена = Док.Content.Find;
        Замена.Execute("Индекс"+Счетчик,  Ложь, Истина, Ложь, , , Истина, , Ложь, Стр.Индекс);
        
        Word.Selection.EndKey(6);
        
      Если Счетчик < Таблица.Количество() тогда
                Word.Selection.InsertBreak(7);
                Word.Selection.Paste();
     КонецЕсли;
                
        Индекс1 = Стр.Индекс;
    КонецЦикла;
    ЗаписатьФайл (Док,КолЗаписей,Индекс1,Файл);
 
    Word.Quit();
КонецПроцедуры
 
 
Процедура ЗаписатьФайл (Док,КолЗаписей,Индекс1,Файл)
     Док.SaveAs(Файл + ?(Прав(Файл,1)="","","") + Индекс1 + "_" + КолЗаписей + ".doc");
    Док.Close(0);
КонецПроцедуры

Можете подсказать как мне сделать чтобы два значения выводила.

Миниатюры

Word SaveAs 1c
 



0



I continually get «Command Fail» at either the saveas, saveas2 or save calls when trying to save a new programmatically created .docx. I know that the file is being created. works fine offline.
Visual Studio 2013
Microsoft.Office.Interop.Word 15
Microsoft Office 10 on server and dev machine
test code:

myInfo_lbl.Text = ""
Dim word As New Microsoft.Office.Interop.Word.Application
word.Visible = True
Dim doc As Microsoft.Office.Interop.Word.Document
doc = word.Documents.Add()
Try
    Dim insertText As String = "This thing needs to start fn working. Damn it!"
Dim range As Microsoft.Office.Interop.Word.Range = doc.Range(Start:=0, End:=0)
range.Text = insertText
doc.SaveAs2("D:myCVCOL_Filestest2.doc")
'doc.Save()
'doc.SaveAs2("D:myCVCOL_Filestest2.doc")
Catch ex As COMException
    myInfo_lbl.Text = ex.ErrorCode & " ~ " & ex.HResult & " ~ " & ex.Message & " ~  try 6"
Finally
    Dim save_changes As Object = False
    doc.Close(save_changes)
    word.Quit(save_changes)
End Try

ɢʀᴜɴᴛ's user avatar

ɢʀᴜɴᴛ

31.4k15 gold badges111 silver badges108 bronze badges

asked Aug 16, 2017 at 20:05

rtFord's user avatar

Looks like you didn’t set the format. Try this code

Imports System.Runtime.InteropServices

Module Module1

    Sub Main()
        CreateDoc()
    End Sub

    Public Sub CreateDoc()
        Dim wordApp As New Microsoft.Office.Interop.Word.Application
        Dim wordDoc As Microsoft.Office.Interop.Word.Document
        Dim range As Microsoft.Office.Interop.Word.Range
        Dim fileName As String
        Dim insertText As String

        Dim format As Microsoft.Office.Interop.Word.WdSaveFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument

        wordApp = New Microsoft.Office.Interop.Word.Application()
        wordDoc = New Microsoft.Office.Interop.Word.Document()
        insertText = "Some text"

        wordApp.Visible = True

        fileName = "D:ProjectsSandboxStackOverflowConsoleVBtest2.doc"

        wordDoc = wordApp.Documents.Add()

        range = wordDoc.Range(Start:=0, End:=0)
        range.Text = insertText

        wordDoc.SaveAs2(fileName, Format)

        wordDoc.Close(Nothing, Nothing, Nothing)
        wordDoc = Nothing
        wordApp = Nothing

    End Sub
End Module

answered Aug 16, 2017 at 21:54

Aeroradish's user avatar

AeroradishAeroradish

3711 gold badge5 silver badges11 bronze badges

1

I had for many months an 80% error when converting a word to a pdf using the function SaveAs(WordDocFilePath & WordDocName & ".pdf", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF) in VB.NET 2013 in a Windows 10 environment. I tried many things but this very simple change resolved just everything :

WordApp.ScreenUpdating = False (whether it was true before)

Suraj Rao's user avatar

Suraj Rao

29.3k11 gold badges96 silver badges103 bronze badges

answered Feb 4, 2021 at 11:27

Swiss Developer's user avatar

Добрый день! Почитала про это в инете, нашла что это возможно, пишут пример такой команды MSWord.SaveAS(Путь + ИмяФайла, 17); У меня команда вызывает ошибку. Причем, если сохранять как MSWord.SaveAS(Путь + ИмяФайла, 16); — в формате word, все ок. Почему в pdf не сохраняет? Потому что у меня Word 2007? А 2010 будет сохранять?

Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Word): Ошибка команды

этот код исполняется на сервере или на клиенте у тебя?

На клиенте. Если я все правильно понимаю)

Вопросы 1. В MSWORD  у тебя точно документ? обычно так называют application 2. Открой у себя на компе ворд и сохрани любой док в pdf — ошибок нет? 3. точно убедись что этот код исполняется на клиенте.

Варианты 1. Нет поддержки PDF 2. Кривые руки программиста 🙂

А какая разница Где? Главное что бы На клиенте или на Сервере был Офис с поддержкой сохранения PDF. И так же, что бы правильно был передан параметр выбора типа файла для сохранения. «Не каждый Офис в PDF пишет», так для справки 🙂

А я разве параметр неправильно передала?)

А ты проверь. Откуда ты взяла, что 17 — это тип PDF? Что за упертая уверенность ,что Офис вообще 2010 и выше? 🙂

+ Макрос показал совсем другой подход 🙂 Sub Макрос1 ‘ ‘ Макрос1 Макрос ‘ ‘

+ Используй «ExportAsFixedFormat»

Так было в примере 16-ворд, 17-pdf, так в примерах было написано)) Я не говорила что у меня офис 2010, я написала что он 2007

Ну, елки-моталки… Попробуй в ворде сохранить в pdf. Даст?

Нет, пробовала, я просто интересуюсь, стоит ли ставить 2010, будет ли там сохранять или проблема не в этом

Блондинка блондинку не понимает 🙁

Не сохраняет из форда в пдф. Надо ставить 2010?) Я видимо блондинистей)

Поставь pdf-принтер и сохраняй в pdf из почти любой программы.

Мне это не подходит, я из 1с программно сохраняю при выводе документа на печать

ты что не понял? ТС хотела программно, а ты ей какой-то принтер пропихиваешь 🙂 если из ворда не сохраняет в пдф, то и из 1С не сохранит — поверь.

MSWord.SaveAS(«C:1.pdf», 17);

В 2010 офисе есть функция сохранения в пдф.

она иногда кривит, например, с залоченными объектами в экселе. пришлось ставить doPDF.

если на компе Вин ХР то сначала её надо переставить

libreoffice convert to pdf совсем не подходит?

Тэги:

Комментарии доступны только авторизированным пользователям

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Word 2016 не подчеркивает ошибки
  • Word 2010 произошла серьезная ошибка во время последнего запуска