Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Один товарищ вчера интересовался, но тему слили в мусорку... Так вот, поскольку МС Офис имеет встроенную поддержку макросов на Visual Basic, то как вы уже догадались, есть возможность взаимодействия (до определенного уровня) документов Офиса с вашим проектом НБ посредством VBS. Например, чтение/запись/поиск значений в документах Экселя и другая разная шняга. Если возникнет какая-нибудь конкретная необходимость, то спрашивайте, рассмотрим эту тему и что можно сделать. Как задавать вопросы
*.doc в НБ можно открыть обектом Артикл, а вот с екселькой...
DEMBEL, имеет ввиду совсем другое, не открыть тот или иной документ, а получить из него необходимые данные, к примеру, ты можеш сделать запрос к базе данных аксеса, или считать что либо из таблицы екселя. То есть не получить визулизацию документа, но иметь из него данные. Все это возможно с помощью VBS. Ну а если очень захочеш, можеш поананировать и изготовить визуальный дубликат нужного документа, средствами нб. В таких вещах важны сами данные а не их визуализация, которая может быть произвольна.
Да, все это возможно, но как верно выразился Алекс, сперва нужно
Quote (Alex3A)
можеш поананировать и изготовить
поэтому ананировать будем только при наличии конкретно поставленной задачи, а не из любопытства, т.к. (возможно) придется адаптировать скрипт под конкретные документы.
Добавлено (29 Август 2009, 15:37) --------------------------------------------- Ну вообще это делается для удобства и автоматизации процессов, а не ради визуализирования. Например, надо тебе выдернуть в проект из экселевской таблицы чето в переменную напрямую,или поискать... не ручками же делать будешь.
А это то и есть визулизация, то же самое и с екселькой. Вникните в то что вы делаете, открываем, скажем табличку в екеле, содержащую скажем прайс и смотрим то что нас интересует скролируя ее. Этот процес называется мануальным поиском, максимум извращения до которого вы додумаетесь, это отсортировать имеющееся по какому либо признаку, но процес мануального поиска остается. <<Зделаем небольшое отступление, в подавляющем большинстве случаев, таблицы екселя используют как вариант типа ворда, но в табличном виде, несмотря на то что в принципе ексель довольно мощная система разработки, просто люди не умеют с ней работать. >> Ведь истинная задача просмотра документа состоит в том что бы найти конкретные данные. При правильном размещении информации становится возможным получить конкретный ответ на конкретный вопрос, исключая мануальный поиск. Представте что в даной таблице описана не одна тысяча товаров... Грамотно построенная таблица кроме собственно данных, будет иметь еще и ряд механизмов, для доступа к ним, их то и можно оформить в виде макросов, которые можно с успехом запускать из внешних приложений. Так же коряво построена и система хранения информации в сети интернет, прежде чем найдеш то что тебе нужно, пересмотриш кучу всякого дерьма. Правда в даном случае причины совсем иного плана.
Добрый день! Интересно... можно ли сделать следующее? Разместить на форме проекта NB объект "Статья", создать средствами встроенного текстового редактора пустой документ RTF и затем с помощью VBS вставить в документ таблицу с переменными... при этом необходима возможность самому настраивать параметры вставляемой таблицы (количество строк, столбцов, имена вставляемых переменных и др.). Попытался сейчас в Word'е создать макрос вставки таблицы и получил следующее:
Code
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _ 2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ wdAutoFitFixed With Selection.Tables(1) If .Style <> "Сетка таблицы" Then .Style = "Сетка таблицы" End If .ApplyStyleHeadingRows = True .ApplyStyleLastRow = False .ApplyStyleFirstColumn = True .ApplyStyleLastColumn = False .ApplyStyleRowBands = True .ApplyStyleColumnBands = False End With Application.Keyboard (1033) Selection.TypeText Text:="[Var1]" Selection.MoveDown Unit:=wdLine, Count:=1 Selection.TypeText Text:="[Var2]" Selection.MoveDown Unit:=wdLine, Count:=1 Selection.TypeText Text:="[Var3]"
Можно ли в данном случае значения параметров NumRows:=3, NumColumns:=2 заменить на переменные NB и тем самым самому выбирать количество столбцов и строк? И вообще, пригоден ли для манипуляции с документами MS Office в NB код, получаемый после создания макроса в том, или ином приложении офиса?
Сообщение отредактировано Lector - Вт, 19 Января 2010, 19:35
И вообще, пригоден ли для манипуляции с документами MS Office в NB код, получаемый после создания макроса в том, или ином приложении офиса?
в чистом виде непригоден (т.к. макрос на основе VBA, этот вариант заточен под другое), требуется немного (а иногда много, бывает много мусора и непригодных выражений) адаптировать синтаксис, чтобы не вылазили ошибки. Но в плане построения структуры и логики конечного скрипта очень полезен, так что если есть опыт работы с VBS то можно скорректировать почти любой макрос для использования с нб.
Quote (Lector)
Можно ли в данном случае значения параметров NumRows:=3, NumColumns:=2 заменить на переменные NB и тем самым самому выбирать количество столбцов и строк?
создай макрос для нарисовки таблицы и посмотри что там пишут, попробуй сам повставлять значения и увидишь.
Добавлено (19 Январь 2010, 21:13) --------------------------------------------- а вообще конкретно для твоей задачи сделать так не выйдет, потребуется вставлять данные о таблице в файл прямо пользуясь синтаксисом rtf (в скрипте проще сразу создать новый rtf-файл с таблицей или вставлять в конец существующего), одним макросом с ворда тут не обойдешься. Но если приспичило, то можно сделать...
Microsoft Word и NeoBook Вобщем, потуги на интеграцию Microsoft Word и NeoBook. Набор действий для получения текста документа, конвертирования его в RTF и HTML (Win1251). Все это для получения/отображения содержимого документа внутри проекта. Кого заинтересует, доступны всевозможные операции с документом а также с другими документами пакета MS Office. Для работы требуется установленный офис (пользуются собственные методы mso), глубоко ковыряться в Office sdk я стоко не выпью, поэтому пока простые операции, для тех кому это может быть интересно. Тестировалось на win7x64/MSO2010.
[UPD]: Проверь на вылеты алертов при открытом ворде.
Клик по каждой из трех кнопок дал текст! Все работает. (ХР SP3, офис 2007) Только форматирование у текста разное, так и должно быть? При создании RTF и HTML, если ворд был открыт, то он выдает сообщения и открывается дополнительно новым окном:
После закрытия этого сообщения ворд выводит окно сохранения документа в котором предлагает сохранить измененный шаблон Normal.dotm. После отмены приходится закрывать и лишнее окно ворда.
Если же на момент тестового проекта ворд был закрыт, то файл Test.docx открывается по тихому, окно ворда не появляется.
Возможно ли в функции сделать так, чтобы при открытом ворде не появлялись просьбы сохранить изменившийся шаблон и не приходилось закрывать лишние вордовские клоны?
Предлагаю единое (для всех авторов функций) оформление путей для созданных функций (с учетом ника автора). В этом случае не придется переделывать пути, сохранится упорядоченность и будет невозможен конфликт имен функций. Например: \Functions\Dembel\Function1 \Functions\Alien\Function1
DEMBEL, я в VBS ничего не понимаю, можешь прокомментировать логику работы функции? Функция открывает файл в ворде, из ворда же "сохраняет как" в указанный формат (RTF или HTML), потом копирует содержимое файла в переменную в проект NB, а исходный файл и конвертированный функция не сохраняет. Так?
Добавлено (30 Январь 2011, 00:45) --------------------------------------------- Функция сработала бы, если бы у меня был установлен офис 2003?
Кого заинтересует, доступны всевозможные операции с документом а также с другими документами пакета MS Office
Какие доступны?
Добавлено (30 Январь 2011, 00:48) --------------------------------------------- И, еще вопрос. Возможно ли потом обратно RTF или HTML конвертировать в DOC или в DOCX?
весь офис. но вряд ли будет желание все ковырять, максимум пока word/excel.
Quote (Вадим)
И, еще вопрос.
да, теперь я ковыряю экспорт и форматирование текста, rtf/html в ворд а также конструирование таблиц как хотел Lector. на этом пока хочу и завязать с вордом.
Quote (Gorezcaid)
скрипт какую то ошибку неизвестную ошибку выведет или просто не выведет результат?
просто ничего не будет, никаких сообщений и результатов. хотя надо бы сделать обработку исключений. Как задавать вопросы
да, теперь я ковыряю экспорт и форматирование текста, rtf/html в ворд а также конструирование таблиц как хотел Lector. на этом пока хочу и завязать с вордом.
Этого пока более, чем достаточно!!
Quote (Вадим)
Функция сработала бы, если бы у меня был установлен офис 2003?
Quote (DEMBEL)
весь офис. но вряд ли будет желание все ковырять, максимум пока word/excel.
- запускается скрытая копия ворда - загружается туда документ (если документ при этом уже открыт, соотв-но будут разные матюки) - для RTF/HTML выполняется функция сохранить как... указывается путь к файлу куда сохранять -- отображение полученных и сохраненных файлов обьектами нб (а иначе как? никак). - для текста просто запрос содержимого в переменную и скидывание ее в проект, без файлов. - закрытие документа (если документ при этом уже был открыт ранее, соотв-но будут разные матюки про сохранение).
просто работа реализуется с неоткрытым документом, отсюда вопросы у ворда.
Добавлено (30 Январь 2011, 01:11) --------------------------------------------- 2003 должен работать, 07-10 точно работает, 2000 и ранее хз... проверить надо.
ну не знаю, у меня 2010, он лишних вопросов почему-то не задает... подозреваю это у тебя из за попытки закрытия ворда после всех операций, а он хочет у тебя прикрыть вообще все документы, посмотрим что можно поделать... Как задавать вопросы
Нет-нет, с документом, который просто был открыт проект ничего не делает, просто функция запускает ворд, а раз он и без того запущен, то создается новое окно ворда, однако потом оно не закрывается, видимо мешает как раз независимо от этого ранее открытое окно ворда.
Quote (DEMBEL)
на каких конкретных операциях office <-> nb лучше заострить внимание
Думаю как ты и описал - перевод в RTF и HTML, и обратно в DOC и в DOCX. Это и есть главное, поскольку позволяет NB-проектам работать с вордом (ну и тоже актуально для Excel, ессно)! Это же замечательное расширение возможностей! Мне думается этого пока и достаточно. А как потребности реальные у народа появятся, тогда и можно будет расширить функционал.
Ну, может быть еще пригодилась бы возможность считывать стандартные "свойства документа" (автор, название, тема, ключевые слова, категория, состояние, примечания) - для того, чтобы можно было, например, автоматом давать файлам осмысленные имена или сортировать полученные файлы по источнику (автору), названию и другим полям... Но у меня сейчас такой потребности нет, это я просто размышляю "вслух".
переписано, добавлен экспорт текста и импорт вебархива возврат ошибок - в переменную [DocErr], ERROR1 - ошибка инициализации (нет ворда), ERROR2 - ошибка при работе ворда. код прокомментирован по возможности.
p.s: затупил с параграфами не по счету... должны быть все и по порядку - 1,2,3... починю. пока интересует тест с разными вордами и посторонними открытыми доками на предмет алертов
переписано, добавлен экспорт текста и импорт вебархива
Отличная работа!
Моменты:
1) При создании веб-архива создается сначала файл .htm или лишь при повторном нажатии создается .mht, так и должно быть?
2) При создании доковского файла документ открывается как в особом "Режиме просмотра документа" - "Веб-документ", в то время, как у меня по умолчанию выставлен режим "Разметка страницы". Возможно ли, чтобы файл открывался в ворде в том режиме, который используется прочими док-файлами на данном компьютере? Хотя это не принципиально, в конце концов наличие форматирования - это важно! А режим просмотра пользователь в крайнем случае и сам сможет поменять. Теперь можно в проектах NB делать кнопку "Сохранить в файл MS Word"!!! Класс! Кстати, правильно ли я понимаю, что расширение зависит от актуальной версии офиса? Если у меня стоит 2007-й, следовательно и файл будет создаваться DOCX, а не DOC, так?
3) Две последние кнопки пока не включать?
Quote (DEMBEL)
интересует тест с разными вордами и посторонними открытыми доками на предмет алертов
да, формат дока по умолчанию зависит от установленной версии. что впрочем логично.
Quote (Вадим)
При создании веб-архива
нет, значит я начудил чтото. это бета тест.
Quote (Вадим)
напугать измененными шаблонами!
ну а в этих самых шаблонах ничего не напортачилось? после работы функции все документы открываются с настройками какие были ранее? Подозреваю, это из-за упомянутого тобой "конфликта" режима просмотра документов, вероятно ворд хотел внести это изменение в глобальный шаблон, поэтому и спрашивал... попробую выяснить как указать вид открытия дока по умолчанию... Как задавать вопросы
ну а в этих самых шаблонах ничего не напортачилось?
Я поспешил с выводами, все-таки мессаги появляются, при попытке закрыть созданные проектом доковские файлы (см. скрин). А при запуске ворда документы выглядят обычно, но файерволл почему-то запросил разрешение для ворда, значит что-то ворд изменял, хотя я на диалоги изменения шаблонов отвечал отрицательно, отменяя все предложения сохранить новый шаблон.
ну это же ворд, как иначе. xls тоже, да. насчет сообщения про несохраненный шаблон нормал.дот при открытом ворде в старых версиях офиса все мучаются, видимо это непобедимо. несмотря на указания из sdk. У меня 2010 работает молча и исправно.
Тема почищена от сообщений не относящихся к сути вопросов.
Ну, значит пусть остается как есть. В описании функции можно лишь отметить:
"Сохранение данных из проекта NB в файлы приложений MS Office (до версии 2010) при открытых приложениях MS Office приведет к вызову диалога сохранения шаблона документа, в используемом приложении. Чтобы избежать вызова ненужных сообщений и не смущать пользователя Вы можете в своем проекте сделать проверку на открытость нужного приложения и обработать результаты этой проверки - сообщением просто предупредив пользователя или попросив его закрыть приложение на время работы Вашего проекта."
"Сохранение данных из проекта NB в файлы приложений MS Office (до версии 2010) при открытых приложениях MS Office приведет к вызову диалога сохранения шаблона документа, в используемом приложении...
У меня MS Office 2007 обновлен до 2009. Никаких лишних окон не наблюдается... Вадим, может написать про обновление ворда и всё... Win7 Pro SP1 x64; NBv5.5.4rus,v5.6.2rus, v5.7.0en, Opera
Gorezcaid, а при открытом в ворде стороннем документе тоже все в порядке? У меня мессаги появляются не при работе NB-проекта, а при попытке потом закрыть созданные проектом (и открытые в ворде) файлы. Поэтому я сначала бодро отрапортовал, что всё ОК, а потом, когда стал закрывать созданные доки - обнаружил мессаги. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)