Вход | Регистрация


1С:Предприятие ::

Метки: 

Как определить формат сохранения Word по умолчанию.

Я
   Numerus Mikhail
 
20.10.17 - 09:31
Всем доброй пятницы.
Имеется:
Com Объект Word.Application

Word = Новый COMОбъект("Word.Application");
НовыйДокумент = Word.ActiveDocument;
//Заполнение документа.

НовыйДокумент.SaveAs("ИмяФайлаБезРасширения");//Получается файл "ИмяФайлаБезРасширения.docx, в случае, если по умолчанию выбран docx


В таком случае файл сохраняется в том формате, который указан как формат по умолчанию. (В ворде: Файл - Параметры - Сохранение - Сохранять файл в следующем формате)

Но если в имени файла присутствует точка, то файл сохраняется с расширением, которые после точки.

НовыйДокумент.SaveAs("ИмяФайла.БезРасширения");//получается файл "ИмяФайла.БезРасширения"


MSDN говорит, что вторым параметром в SaveAs можно передавать расширение файла
https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.word.document.saveas.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
Но нигде не написано, как программно узнать, какое расширение используется по умолчанию. Вроде как перерыл весь ком объект Word, но не нашел в нем ничего примерно похожего на то, что надо мне.
Может кто сталкивался и подскажет в какую сторону копать?
 
 
   Numerus Mikhail
 
1 - 20.10.17 - 10:09
Подниму. Есть вариант называть файл без точек, а потом переименовывать его, но такие костыли оставлю на крайний случай
   Масянька
 
2 - 20.10.17 - 10:15
(1) Задача-то какая?
   Numerus Mikhail
 
3 - 20.10.17 - 10:22
(2) Задача сохранить файл с расширением, которое указано в ворде как расширение по умолчанию.
Имя файла задает пользователь. Если в имени файла нет точек, то все работает, если же в имени присутствует точка, то файл сохраняется с неправильным расширением
   Масянька
 
4 - 20.10.17 - 10:23
(3) Делай без точки.
   Numerus Mikhail
 
5 - 20.10.17 - 10:26
(4) Гениально, конечно, но "Имя файла задает пользователь". И, если ворд предоставляет возможность сохранять файлы, в которых есть точка, то считаю нецелесообразным запрещать это. Поэтому, суть вопроса сводится к
"Как программно определить расширение по умолчанию"
   Филиал-msk
 
6 - 20.10.17 - 10:27
(0) > MSDN говорит, что вторым параметром в SaveAs можно передавать расширение файла

C чего бы это? MSDN говорит, что вторым параметром в SaveAs можно передавать формат файла.
   Масянька
 
7 - 20.10.17 - 10:28
(5) Пихать точки в имя файла (не путать с расширением) - это не просто моветон... За это нужно руки отрубать по самую голову...
   Филиал-msk
 
8 - 20.10.17 - 10:29
(7) Ты еще возмутись, что некоторые туда пробелы запихивают
   Масянька
 
9 - 20.10.17 - 10:32
(6) Только как получить расширение по умолчанию?
(8) Пробелы еще терпимо...
   Филиал-msk
 
10 - 20.10.17 - 10:33
(5) НовыйДокумент.SaveAs("ИмяФайла.С.Точками", 16)
к чему приводит?
 
 Рекламное место пустует
   Филиал-msk
 
11 - 20.10.17 - 10:35
(9) Так же, как и всегда, Пинки... прочитать документацию. =)

https://msdn.microsoft.com/en-us/vba/word-vba/articles/wdsaveformat-enumeration-word
   Numerus Mikhail
 
12 - 20.10.17 - 10:42
(10) сохраняется без расширения
   Филиал-msk
 
13 - 20.10.17 - 11:00
(12) А теперь 
НовыйДокумент.SaveAs("ИмяФайла.С.Точками.docx", 16)
   Масянька
 
14 - 20.10.17 - 11:07
(13) Методом тыка - НовыйДокумент.SaveAs("ИмяФайла.С.Точками.docx", 1)
   Numerus Mikhail
 
15 - 20.10.17 - 11:08
(13) Да, я уже опытным путем понял, что неважно какой формат сохранения я выберу, если в имени файла есть точки, оно будет сохраняться с расширением после последней точки.
   Филиал-msk
 
16 - 20.10.17 - 11:09
(15). Нет. Это проверка того, что у тебя расширение соответствует формату.
В ранних вордах оно бросало исключение, что тип не соответствует расширению файла. Здесь решили упростить обрезанием некорректного расширения нахъ.
   Масянька
 
17 - 20.10.17 - 11:10
(15) А я вам говорила...
А что запрещает программно формировать имя файла?
   Филиал-msk
 
18 - 20.10.17 - 11:11
Так что, давай засучивай рука и приступай к дело
   Numerus Mikhail
 
19 - 20.10.17 - 11:12
(16) Оно не обрезает 
НовыйДокумент.SaveAs("lol.kek.docx.хук", 16);

создает файл "lol.kek.docx.хук". Сохраняется как раз в то, что указано в SaveFormat
   Филиал-msk
 
20 - 20.10.17 - 11:13
(19) Ну тогда вообще проблемы нет - если лев 4 <> .докх тогда += .докх
   Масянька
 
21 - 20.10.17 - 11:13
У меня не арбайтэн 16.
Сохраняет в doc? а в Worf'у стоит docx.
   Numerus Mikhail
 
22 - 20.10.17 - 11:13
(20) а если в формате по умолчанию docm выбран? в этом же вся суть проблемы.
   Numerus Mikhail
 
23 - 20.10.17 - 11:15
(20) я нашел свойство "DefaultSaveFormat" у Word.Application

Но оно довольно убогое.
Если docx - пусто
если docm - MacroEnabledDocument
Если doc  - Doc

Ну и так далее. Получается можно один раз руками перебрать все варианты, засунуть их в какое-то соответствие, а потом искать при формировании.
   Филиал-msk
 
24 - 20.10.17 - 11:16
   Numerus Mikhail
 
25 - 20.10.17 - 11:22
(24) Если бы я точно знал, в какой формат мне надо сохранить - проблемы бы, наверное, не было. Суть была именно в определении какой формат по умолчанию выбран.
   Масянька
 
26 - 20.10.17 - 11:24
У меня:
    мWord = СоздатьОбъект("Word.Application");
Сообщить("1 - " + мWord.DefaultSaveFormat);

вернуло:
1 -
   Филиал-msk
 
27 - 20.10.17 - 11:26
(25) цитата: "... Опция Office/Параметры Word/Сохранение/Сохранять файлы в следующем формате "Документ 97-2003" естественно НАСТРОЕНА. но она работает только на новые созданные документы.
   Масянька
 
28 - 20.10.17 - 11:28
Я не понимаю: я что сама с собой разговариваю?!
   Филиал-msk
 
29 - 20.10.17 - 11:28
Только. На. Новые.
   Масянька
 
30 - 20.10.17 - 11:42
Кстати...
мДок.SaveAs(мИмяФайла, 1) - сохранил в dot
мДок.SaveAs(мИмяФайла, 16) - сохранил в docx (установлен по умолчанию).
   Масянька
 
31 - 20.10.17 - 11:43
мДок.SaveAs(мИмяФайла, 2); - сохранил в txt.
   Numerus Mikhail
 
32 - 20.10.17 - 11:44
(29) Не могу понять, это я тебя не понимаю или ты меня.
Я создаю новые документы.

Для просты код:
Word = Новый COMОбъект("Word.Application");
    Word.Documents.add();
    НовыйДокумент = Word.ActiveDocument;
    НовыйДокумент.SaveAs("C:\Users\m.korniltsev\Documents\Куча\lol.kek.docx.хук");
    НовыйДокумент.Close(0);
    Word.Quit(0);

это же НОВЫЙ документ? или я что-то не понимаю?
Сохраняет с расширением .хук
   Numerus Mikhail
 
33 - 20.10.17 - 11:44
(31) Это если точки в имени файла нет. В этом же вся моя проблема изначально
 
 
   Масянька
 
34 - 20.10.17 - 11:45
мДок.SaveAs(мИмяФайла); - сохранил в docx (по умолчанию стоит).
   Масянька
 
35 - 20.10.17 - 11:45
(33) А что такого в этих точках?
   Numerus Mikhail
 
36 - 20.10.17 - 11:47
(35) Как понять что такого? Ну нравится пользователю делать имя файла "СУПЕР МЕГА ВАЖНЫЙ ФАЙЛ от 12.02.2017"
   Масянька
 
37 - 20.10.17 - 11:49
(36) Ну дык, меняй точки. На пробелы, подчерки...
   Масянька
 
38 - 20.10.17 - 11:49
+ (37) Объясни, что это (мягко говоря) не корректно.
   Numerus Mikhail
 
39 - 20.10.17 - 11:55
(38) А кто сказал, что это некорректно? Я упорно не понимаю, почему ты считаешь, что это моветон. Можешь обьяснить, если не сложно?
   Масянька
 
40 - 20.10.17 - 12:08
(39) Смешной ты...
Тему-то зачем завел? :)
"." - в ОСи всегда расценивалась, как разделитель имени файла и расширения. И то, что в Винде разрешили использовать "." в имени файла - не показатель, что всё будет корректно работать.
Сам уже убедился.



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует