Открытие Wordовского файла

Тема в разделе "Lotus - Программирование", создана пользователем rm2005, 20 ноя 2007.

Статус темы:
Закрыта.
  1. rm2005

    rm2005 Гость

    Добрый день!

    Задача по кнопки открыть вордовский файл, находящийся в форме, прикреплённый в поле типа Rich Text.

    Код (Text):
    Dim neo As NotesEmbeddedObject
    Set neo = Doc.EmbeddedObjects(0)
    Set odject= neo.Activate(False)
    Set word = neo.Object
    Set x = word.Application
    x.Visible = True
    Запускается только ворд, а нужный файл нет.
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Код (Text):
    Set odject= neo.Activate(True)
    а так?
     
  3. rm2005

    rm2005 Гость

    Для: Morpheus

    Вот странная фигня получается, если Activate(True) пишу, открывается нужный вордовский док, моментально закрывается, и остаётся просто ворд висеть.
     
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    как вариант вкиуть документ в папку и открыть докумет shell
     
  5. K-Fire

    K-Fire Гость

    Закрывается, потому что объекты уничтожаются, когда код на кнопке завершается. Нужно просто определение переменных перенести в Globals Declarations формы - всё должно заработать.
     
  6. serEJa Shabalin

    serEJa Shabalin Гость

    Огромное спасибо. Год назад в порядке экспериментов столкнулся с этим вопросом. Тогда вопрос закрылся за недостатком времени, но сейчас приятно узнать на него ответ.

    Репутация +1 (Поднял бы на больше. Если не забуду добавлю +1 через неделю)
     
  7. Verm

    Verm Гость

    Для: rm2005

    можно привести полный код кнопки?
     
  8. Гость

    Для: Verm
    Код (Text):
    Dim neo As NotesEmbeddedObject
    Set neo = Doc.EmbeddedObjects(0)
    Set object= neo.Activate(True)
    Set word = neo.Object
    Set x = word.Application
    x.Visible = True
    Соответственно как было сказано ранее, переменные neo, object, x, word определить в Globals Declarations
     
  9. Idea

    Idea Гость

    Скажите, пожалуйста, а переменная word типа Variant? у меня просто вылетает ошибка несоответствия типа.
     
  10. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
  11. amigolinx

    amigolinx Гость

    В этом плане любопытно знать, как из этого полученного из ворда Variant'а (Object'а) вытащить инфу. В большинстве случаев это удается, а вот как, например, достать количество символов в доке, например, после выполнения такого кода?
    [codebox]Set ch_count = aDoc.BuiltInDocumentProperties(16)
    ' ch_count as variant;
    ' 16 - вордовская константа, именованная в ворде как wdPropertyCharacters;
    ' aDoc - уровень word.activedocument[/codebox]
    В дебаггере видно, что объект возвращается успешно, но при попытке преобразовать его к какому-нибудь родному типу лотуса вылетает type missmatch.
    Есть у кого-нибудь идеи?
     
  12. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Это как? а чем Variant не родной тип.

    у word.activedocument есть Characters у которого есть свойство Count
    Короче открывайте справку в офисе по VBA или заходите на msdn там тоже самое
     
  13. amigolinx

    amigolinx Гость

    на данный момент так и вышел из положения для подсчета символов с пробелами + удаление всех пробельных символов и снова characters.count для подсчета количества символов без пробелов, но быстрее было бы забрать эту инфу через BuiltInDocumentProperties(16) и BuiltInDocumentProperties(30), а при попытке вывести в messagebox полученный variant выдается ошибка и приведение к CStr не спасает почему-то
     
  14. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Cstr(variant(0) ) - может так?
     
  15. amigolinx

    amigolinx Гость

    Неа, пока не удалось добиться результата - теперь сам automation object выдает собственную внутреннюю ошибку насчет несоответствия типов в параметрах. Ведется дальнейшая работа - что ж за параметр он хочет...
     
  16. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    А в поток считать данные и там посчитать символы?)

    Погорячился, там проблемы с кодировкой начинают вылезать(
     
  17. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Вот рабочий код

    Код (Text):
    Sub Click(Source As Button)
    Dim v ,f , wordApp, wordDoc
    Set wordApp = CreateObject ("Word.Application") ' приложение
    Set wordDoc = wordApp.Documents.Open("C:\1.doc") ' открываем документ
    Let wordApp.Visible = False ' Не показывать
    Let f = wordDoc.BuiltInDocumentProperties("Number of characters").Value ' получаем значение встроенного свойства
    MsgBox "Chr Count = " Cstr(f) ' - без пробелов
    Call wordApp.Quit(True) ' благополучно всё закрываем
    End Sub
    жесть, прокатить навероне тока с txt файлами
     
  18. amigolinx

    amigolinx Гость

    Morpheus, спасибо огроменное, респект и уважуха :) (вот наберу веса, обязательно в репутацию +16 добавлю :))). Не до конца я все таки хелп в VBA почитал, пропустил, что к всяким обжектам доступ через value делается. Идею принял, под себя чуток доработал, может кому интересно:
    Код (Text):
    Let withSpaces = word.ActiveDocument.BuiltInDocumentProperties(30).Value
    Let withoutSpaces = word.ActiveDocument.BuiltInDocumentProperties(16).Value
    работает как часы

    А стрим писать/читать была мысля, но просто в стрим пишется как есть, а у меня rti-поле с html-тэгами и текстом вперемешку, вот через открытие в ворде выкрутился (может и коряво, можно было и "просто" конвертер прикрутить, но времени в обрез) - он по <html><body> в заголовке узнает, что файл хтмельный и преобразует его по-честному. Оставалось только количество символов забрать и дело в шляпе. К тому же может потом пригодиться при сборе инфы по вордовым файлам в директории, например.
     
  19. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    не только через value. В хэлпе по VBa неплохо все properies расписаннны. Правда индексы (16/30) я не нашёл , потому и написал "Number of characters"
     
  20. amigolinx

    amigolinx Гость

    а я, наоборот, числовое значение соответствующих констант надыбал - в object browser'e (полезная штука, чтоб параметры или мемберов посмотреть при надобности), куда попасть можно, например, вызвав контекстное меню на интересующем слове в vba-редакторе - команда меню Definition, а там уже внизу над статус баром вся инфа приведена
     
Загрузка...
Статус темы:
Закрыта.

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