| Взаимодействие с документами Microsoft Office |
| DEMBEL | Дата: Суббота, 29 Август 2009, 14:42 | Сообщение # 1 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2601
Репутация: 29
Награды: 16
Статус: Offline
| Один товарищ вчера интересовался, но тему слили в мусорку... Так вот, поскольку МС Офис имеет встроенную поддержку макросов на Visual Basic, то как вы уже догадались, есть возможность взаимодействия (до определенного уровня) документов Офиса с вашим проектом НБ посредством VBS. Например, чтение/запись/поиск значений в документах Экселя и другая разная шняга. Если возникнет какая-нибудь конкретная необходимость, то спрашивайте, рассмотрим эту тему и что можно сделать.
|
| |
| |
|
| Сергей | Дата: Суббота, 29 Август 2009, 14:59 | Сообщение # 2 |
Необукер
Группа: Проверенные
Сообщений: 2380
Репутация: 26
Награды: 13
Статус: Offline
| *.doc в НБ можно открыть обектом Артикл, а вот с екселькой...
|
| |
| |
|
| Alex3A | Дата: Суббота, 29 Август 2009, 15:11 | Сообщение # 3 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 3032
Репутация: 31
Награды: 11
Статус: Offline
| Quote (sp3d) *.doc в НБ можно открыть обектом Артикл, а вот с екселькой... DEMBEL, имеет ввиду совсем другое, не открыть тот или иной документ, а получить из него необходимые данные, к примеру, ты можеш сделать запрос к базе данных аксеса, или считать что либо из таблицы екселя. То есть не получить визулизацию документа, но иметь из него данные. Все это возможно с помощью VBS. Ну а если очень захочеш, можеш поананировать и изготовить визуальный дубликат нужного документа, средствами нб. В таких вещах важны сами данные а не их визуализация, которая может быть произвольна.
|
| |
| |
|
| Сергей | Дата: Суббота, 29 Август 2009, 15:30 | Сообщение # 4 |
Необукер
Группа: Проверенные
Сообщений: 2380
Репутация: 26
Награды: 13
Статус: Offline
| Quote (Alex3A) DEMBEL, имеет ввиду совсем другое я тоже это имел ввиду, получить данные, а в ексельки и визуализировать то нечего таблицы и текст(если без граф. вставок)
|
| |
| |
|
| DEMBEL | Дата: Суббота, 29 Август 2009, 15:37 | Сообщение # 5 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2601
Репутация: 29
Награды: 16
Статус: Offline
| Да, все это возможно, но как верно выразился Алекс, сперва нужноQuote (Alex3A) можеш поананировать и изготовить поэтому ананировать будем только при наличии конкретно поставленной задачи, а не из любопытства, т.к. (возможно) придется адаптировать скрипт под конкретные документы.Добавлено (29 Август 2009, 15:37) --------------------------------------------- Ну вообще это делается для удобства и автоматизации процессов, а не ради визуализирования. Например, надо тебе выдернуть в проект из экселевской таблицы чето в переменную напрямую,или поискать... не ручками же делать будешь.
|
| |
| |
|
| Сергей | Дата: Суббота, 29 Август 2009, 15:46 | Сообщение # 6 |
Необукер
Группа: Проверенные
Сообщений: 2380
Репутация: 26
Награды: 13
Статус: Offline
| Quote (DEMBEL) а не ради визуализирования а где слово визуализация
|
| |
| |
|
| DEMBEL | Дата: Суббота, 29 Август 2009, 15:58 | Сообщение # 7 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2601
Репутация: 29
Награды: 16
Статус: Offline
| Quote (sp3d) а в ексельки и визуализировать то нечего таблицы и текст
|
| |
| |
|
| Alex3A | Дата: Суббота, 29 Август 2009, 19:22 | Сообщение # 8 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 3032
Репутация: 31
Награды: 11
Статус: Offline
| Quote (sp3d) *.doc в НБ можно открыть обектом Артикл А это то и есть визулизация, то же самое и с екселькой. Вникните в то что вы делаете, открываем, скажем табличку в екеле, содержащую скажем прайс и смотрим то что нас интересует скролируя ее. Этот процес называется мануальным поиском, максимум извращения до которого вы додумаетесь, это отсортировать имеющееся по какому либо признаку, но процес мануального поиска остается. <<Зделаем небольшое отступление, в подавляющем большинстве случаев, таблицы екселя используют как вариант типа ворда, но в табличном виде, несмотря на то что в принципе ексель довольно мощная система разработки, просто люди не умеют с ней работать. >> Ведь истинная задача просмотра документа состоит в том что бы найти конкретные данные. При правильном размещении информации становится возможным получить конкретный ответ на конкретный вопрос, исключая мануальный поиск. Представте что в даной таблице описана не одна тысяча товаров... Грамотно построенная таблица кроме собственно данных, будет иметь еще и ряд механизмов, для доступа к ним, их то и можно оформить в виде макросов, которые можно с успехом запускать из внешних приложений. Так же коряво построена и система хранения информации в сети интернет, прежде чем найдеш то что тебе нужно, пересмотриш кучу всякого дерьма. Правда в даном случае причины совсем иного плана.
|
| |
| |
|
| Lector | Дата: Вторник, 19 Январь 2010, 19:31 | Сообщение # 9 |
Ветеран форума
Группа: Проверенные
Сообщений: 56
Репутация: 1
Награды: 0
Статус: Online
| Добрый день! Интересно... можно ли сделать следующее? Разместить на форме проекта 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 |
| |
| |
|
| DEMBEL | Дата: Вторник, 19 Январь 2010, 21:13 | Сообщение # 10 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2601
Репутация: 29
Награды: 16
Статус: Offline
| Quote (Lector) И вообще, пригоден ли для манипуляции с документами MS Office в NB код, получаемый после создания макроса в том, или ином приложении офиса? в чистом виде непригоден (т.к. макрос на основе VBA, этот вариант заточен под другое), требуется немного (а иногда много, бывает много мусора и непригодных выражений) адаптировать синтаксис, чтобы не вылазили ошибки. Но в плане построения структуры и логики конечного скрипта очень полезен, так что если есть опыт работы с VBS то можно скорректировать почти любой макрос для использования с нб.Quote (Lector) Можно ли в данном случае значения параметров NumRows:=3, NumColumns:=2 заменить на переменные NB и тем самым самому выбирать количество столбцов и строк? создай макрос для нарисовки таблицы и посмотри что там пишут, попробуй сам повставлять значения и увидишь. Добавлено (19 Январь 2010, 21:13) --------------------------------------------- а вообще конкретно для твоей задачи сделать так не выйдет, потребуется вставлять данные о таблице в файл прямо пользуясь синтаксисом rtf (в скрипте проще сразу создать новый rtf-файл с таблицей или вставлять в конец существующего), одним макросом с ворда тут не обойдешься. Но если приспичило, то можно сделать...
|
| |
| |