Сохранение офисных документов.

MMN

Well-known member
11.12.2008
97
0
#1
При создании документа на основе шаблона каким образом можно сохранить документ в нужном мне формате?
При сохранении документа происходит сохранение в формат который установлен по умолчанию у пользователя.
Код:
Set AppProg = CreateObject("Word.Application")	
Call AppProg.documents.add(TemplateName)
Set AppDoc = AppProg.activedocument
AppDoc.saveas(LocalTmpPath &"\"&docSf.UNID(0))
AppProg.quit
В итоге на выходе я получаю разные файлы DOC или DOCX в зависимости какой формат установлен у пользователя.
 
13.03.2009
625
1
#2
не уловил, в каком моменте появляется lotus, но все же: откройте документ в ворде, начните запись макроса, сохраните документ в нужном формате, остановите макрос, посмотрите получившийся код.
 

hosm

* so what *
18.05.2009
2 442
6
#3
смотрим параметр Document.saveas FileFormat
можно заглянуть в Document.SaveFormat Property
тема перенесена в VB.
 

MMN

Well-known member
11.12.2008
97
0
#4
Получил я строку вида
Код:
ActiveDocument.SaveAs FileName:="gdgdgdfgdf.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
но лотус ее не понимает.

строка такого вида ничего не дает т.к. записывает документ все равно в новом формате.
Код:
	AppDoc.SaveAs LocalTmpPath &"\"&docSf.UNID(0),wdFormatDocument
 

hosm

* so what *
18.05.2009
2 442
6
#5
так, я это уже устаю повторять. лотус не поддерживает такой нотации "имя:=значение". пишите просто значения параметров через запятую, посмотрите в справке вба ворда правильный порядок параметров. Если что-то надо пропустить по дефолту, можно ничего не указывать, просто подряд запятые.
я обычно люблю call и параметры в скобках указывать, но это личные предпочтения.

PS:Кста, а почему расширение не указываете при сохранении, не надо?
Да, и константы типа wdFormatDocument смотрим методом гугля (есть готовые файлики ряда констант для офисных приложений - были на нотеснете), мессаджбоксом и т.п.
Ну, или мой любимый - заходим в ВБ офисного приложения, Debug\Add watch
Expression:
wdFormatDocument
Context:
(AllProcedures)
(AllModules)

Получаем значение - 0
 

MMN

Well-known member
11.12.2008
97
0
#6
все спасибо разобрался

-----------
В записанном макросе метод SaveAs передает одному из своих параметров в качестве аргумента встроенную константу wdFormatDocument. В некоторых случаях, в зависимости от выбранного языка программирования, вместо встроенных констант необходимо передавать сопоставленное им числовое значение. Раздел справки для метода SaveAs не содержит таких сведений, однако их можно найти в диалоговом окне Object Browser.
-------------

а расширение он сам ставит
 

hosm

* so what *
18.05.2009
2 442
6
#7
да, в Object Browser удобненько. спасибо)
А за расширение - так и подумала, но на всякий спросила. В основном предпочитаю явно указывать.