Форум
Написать нам
Страница 1 из 11
Модератор форума: Peter 
Форум MMB » Всё о программе Neo Book » Мир NeoBook » Взаимодействие с документами Microsoft Office (Excel, Word, Access, Outlook)
Взаимодействие с документами Microsoft Office
DEMBELДата: Суббота, 29 Август 2009, 14:42 | Сообщение # 1
Наш дизайнер
Группа: Модераторы
Сообщений: 2601
Репутация: 29
Награды: 16
Статус: Offline
Один товарищ вчера интересовался, но тему слили в мусорку... Так вот, поскольку МС Офис имеет встроенную поддержку макросов на Visual Basic, то как вы уже догадались, есть возможность взаимодействия (до определенного уровня) документов Офиса с вашим проектом НБ посредством VBS. Например, чтение/запись/поиск значений в документах Экселя и другая разная шняга. Если возникнет какая-нибудь конкретная необходимость, то спрашивайте, рассмотрим эту тему и что можно сделать.
 
СергейДата: Суббота, 29 Август 2009, 14:59 | Сообщение # 2
Необукер
Группа: Проверенные
Сообщений: 2380
Репутация: 26
Награды: 13
Статус: Offline
Quote (DEMBEL)
МС Офис
*.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-файл с таблицей или вставлять в конец существующего), одним макросом с ворда тут не обойдешься. Но если приспичило, то можно сделать...

 
Форум MMB » Всё о программе Neo Book » Мир NeoBook » Взаимодействие с документами Microsoft Office (Excel, Word, Access, Outlook)
Страница 1 из 11
Поиск: