• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы MMN
  • Дата начала
M

MMN

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

turumbay

не уловил, в каком моменте появляется lotus, но все же: откройте документ в ворде, начните запись макроса, сохраните документ в нужном формате, остановите макрос, посмотрите получившийся код.
 
H

hosm

смотрим параметр Document.saveas FileFormat
можно заглянуть в Document.SaveFormat Property
тема перенесена в VB.
 
M

MMN

Получил я строку вида
Код:
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
 
H

hosm

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

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

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

MMN

все спасибо разобрался

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

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

hosm

да, в Object Browser удобненько. спасибо)
А за расширение - так и подумала, но на всякий спросила. В основном предпочитаю явно указывать.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!