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

Тема в разделе "Visual Basic", создана пользователем MMN, 23 июл 2010.

  1. MMN

    MMN Well-Known Member

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

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    не уловил, в каком моменте появляется lotus, но все же: откройте документ в ворде, начните запись макроса, сохраните документ в нужном формате, остановите макрос, посмотрите получившийся код.
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    смотрим параметр Document.saveas FileFormat
    можно заглянуть в Document.SaveFormat Property
    тема перенесена в VB.
     
  4. MMN

    MMN Well-Known Member

    Регистрация:
    11 дек 2008
    Сообщения:
    97
    Симпатии:
    0
    Получил я строку вида
    Код (LotusScript):
    ActiveDocument.SaveAs FileName:="gdgdgdfgdf.doc", FileFormat:= _
    wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
    True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
    False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
    SaveAsAOCELetter:=False
    но лотус ее не понимает.

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

    hosm * so what *

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

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

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

    MMN Well-Known Member

    Регистрация:
    11 дек 2008
    Сообщения:
    97
    Симпатии:
    0
    все спасибо разобрался

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

    а расширение он сам ставит
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    да, в Object Browser удобненько. спасибо)
    А за расширение - так и подумала, но на всякий спросила. В основном предпочитаю явно указывать.
     
Загрузка...

Поделиться этой страницей