|
Как определить формат сохранения Word по умолчанию. | ☑ | ||
---|---|---|---|---|
0
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, но не нашел в нем ничего примерно похожего на то, что надо мне. Может кто сталкивался и подскажет в какую сторону копать? |
|||
1
Numerus Mikhail
20.10.17
✎
10:09
|
Подниму. Есть вариант называть файл без точек, а потом переименовывать его, но такие костыли оставлю на крайний случай
|
|||
2
Масянька
20.10.17
✎
10:15
|
(1) Задача-то какая?
|
|||
3
Numerus Mikhail
20.10.17
✎
10:22
|
(2) Задача сохранить файл с расширением, которое указано в ворде как расширение по умолчанию.
Имя файла задает пользователь. Если в имени файла нет точек, то все работает, если же в имени присутствует точка, то файл сохраняется с неправильным расширением |
|||
4
Масянька
20.10.17
✎
10:23
|
(3) Делай без точки.
|
|||
5
Numerus Mikhail
20.10.17
✎
10:26
|
(4) Гениально, конечно, но "Имя файла задает пользователь". И, если ворд предоставляет возможность сохранять файлы, в которых есть точка, то считаю нецелесообразным запрещать это. Поэтому, суть вопроса сводится к
"Как программно определить расширение по умолчанию" |
|||
6
Филиал-msk
20.10.17
✎
10:27
|
(0) > MSDN говорит, что вторым параметром в SaveAs можно передавать расширение файла
C чего бы это? MSDN говорит, что вторым параметром в SaveAs можно передавать формат файла. |
|||
7
Масянька
20.10.17
✎
10:28
|
(5) Пихать точки в имя файла (не путать с расширением) - это не просто моветон... За это нужно руки отрубать по самую голову...
|
|||
8
Филиал-msk
20.10.17
✎
10:29
|
(7) Ты еще возмутись, что некоторые туда пробелы запихивают
|
|||
9
Масянька
20.10.17
✎
10:32
|
(6) Только как получить расширение по умолчанию?
(8) Пробелы еще терпимо... |
|||
10
Филиал-msk
20.10.17
✎
10:33
|
(5) НовыйДокумент.SaveAs("ИмяФайла.С.Точками", 16)
к чему приводит? |
|||
11
Филиал-msk
20.10.17
✎
10:35
|
(9) Так же, как и всегда, Пинки... прочитать документацию. =)
https://msdn.microsoft.com/en-us/vba/word-vba/articles/wdsaveformat-enumeration-word |
|||
12
Numerus Mikhail
20.10.17
✎
10:42
|
(10) сохраняется без расширения
|
|||
13
Филиал-msk
20.10.17
✎
11:00
|
(12) А теперь
НовыйДокумент.SaveAs("ИмяФайла.С.Точками.docx", 16) |
|||
14
Масянька
20.10.17
✎
11:07
|
(13) Методом тыка - НовыйДокумент.SaveAs("ИмяФайла.С.Точками.docx", 1)
|
|||
15
Numerus Mikhail
20.10.17
✎
11:08
|
(13) Да, я уже опытным путем понял, что неважно какой формат сохранения я выберу, если в имени файла есть точки, оно будет сохраняться с расширением после последней точки.
|
|||
16
Филиал-msk
20.10.17
✎
11:09
|
(15). Нет. Это проверка того, что у тебя расширение соответствует формату.
В ранних вордах оно бросало исключение, что тип не соответствует расширению файла. Здесь решили упростить обрезанием некорректного расширения нахъ. |
|||
17
Масянька
20.10.17
✎
11:10
|
(15) А я вам говорила...
А что запрещает программно формировать имя файла? |
|||
18
Филиал-msk
20.10.17
✎
11:11
|
Так что, давай засучивай рука и приступай к дело
|
|||
19
Numerus Mikhail
20.10.17
✎
11:12
|
(16) Оно не обрезает
НовыйДокумент.SaveAs("lol.kek.docx.хук", 16); создает файл "lol.kek.docx.хук". Сохраняется как раз в то, что указано в SaveFormat |
|||
20
Филиал-msk
20.10.17
✎
11:13
|
(19) Ну тогда вообще проблемы нет - если лев 4 <> .докх тогда += .докх
|
|||
21
Масянька
20.10.17
✎
11:13
|
У меня не арбайтэн 16.
Сохраняет в doc? а в Worf'у стоит docx. |
|||
22
Numerus Mikhail
20.10.17
✎
11:13
|
(20) а если в формате по умолчанию docm выбран? в этом же вся суть проблемы.
|
|||
23
Numerus Mikhail
20.10.17
✎
11:15
|
(20) я нашел свойство "DefaultSaveFormat" у Word.Application
Но оно довольно убогое. Если docx - пусто если docm - MacroEnabledDocument Если doc - Doc Ну и так далее. Получается можно один раз руками перебрать все варианты, засунуть их в какое-то соответствие, а потом искать при формировании. |
|||
24
Филиал-msk
20.10.17
✎
11:16
|
||||
25
Numerus Mikhail
20.10.17
✎
11:22
|
(24) Если бы я точно знал, в какой формат мне надо сохранить - проблемы бы, наверное, не было. Суть была именно в определении какой формат по умолчанию выбран.
|
|||
26
Масянька
20.10.17
✎
11:24
|
У меня:
мWord = СоздатьОбъект("Word.Application"); Сообщить("1 - " + мWord.DefaultSaveFormat); вернуло: 1 - |
|||
27
Филиал-msk
20.10.17
✎
11:26
|
(25) цитата: "... Опция Office/Параметры Word/Сохранение/Сохранять файлы в следующем формате "Документ 97-2003" естественно НАСТРОЕНА. но она работает только на новые созданные документы.
|
|||
28
Масянька
20.10.17
✎
11:28
|
Я не понимаю: я что сама с собой разговариваю?!
|
|||
29
Филиал-msk
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.
|
|||
32
Numerus Mikhail
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); это же НОВЫЙ документ? или я что-то не понимаю? Сохраняет с расширением .хук |
|||
33
Numerus Mikhail
20.10.17
✎
11:44
|
(31) Это если точки в имени файла нет. В этом же вся моя проблема изначально
|
|||
34
Масянька
20.10.17
✎
11:45
|
мДок.SaveAs(мИмяФайла); - сохранил в docx (по умолчанию стоит).
|
|||
35
Масянька
20.10.17
✎
11:45
|
(33) А что такого в этих точках?
|
|||
36
Numerus Mikhail
20.10.17
✎
11:47
|
(35) Как понять что такого? Ну нравится пользователю делать имя файла "СУПЕР МЕГА ВАЖНЫЙ ФАЙЛ от 12.02.2017"
|
|||
37
Масянька
20.10.17
✎
11:49
|
(36) Ну дык, меняй точки. На пробелы, подчерки...
|
|||
38
Масянька
20.10.17
✎
11:49
|
+ (37) Объясни, что это (мягко говоря) не корректно.
|
|||
39
Numerus Mikhail
20.10.17
✎
11:55
|
(38) А кто сказал, что это некорректно? Я упорно не понимаю, почему ты считаешь, что это моветон. Можешь обьяснить, если не сложно?
|
|||
40
Масянька
20.10.17
✎
12:08
|
(39) Смешной ты...
Тему-то зачем завел? :) "." - в ОСи всегда расценивалась, как разделитель имени файла и расширения. И то, что в Винде разрешили использовать "." в имени файла - не показатель, что всё будет корректно работать. Сам уже убедился. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |