Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2013, 11:54   #1
denismix
Новичок
Джуниор
 
Регистрация: 20.03.2013
Сообщений: 5
По умолчанию Excel как "калькулятор" сложных вычислений для других приложений Office

Здравствуйте!
Подскажите пожалуйста КАК (или хотя бы подтолкните в нужном направлении), я даже не пойму по каким запросам искать нужную инфу =)

Мне нужно из InfoPath (или, например, из Ворда, Акцесса) вызывать Excel, так чтобы он:
1. Запустился в фоновом режиме (не открываясь на экране и не смущая пользователя)
2. Открыл определенную книгу
3. Получил (или использовал уже полученные в момент вызова) от вызвавшей программы данные.
4. Подставил их в определенные ячейки определённой книги.
5. Просчитал (проще говоря обновил книгу с новыми данными).
6. Вернул вызвавшей программе результат (данные одной, либо нескольких заранее определенных ячеек).
7. Тихо-мирно-незаметно закрылся.
8. При этом не задавал пользователю никаких вопросов.

Нет ли какого-нибудь стандартного и простого пути для организации таких трюков?
Например вызывать его "типа как" функцию с передачей параметров. Если есть вариант не мудрить с VB или С, а использовать что то типа надстроек будет вообще здоровски =))

PS В: -А нахрена тебе это? Считай в программе.
О: -У меня сложные многоуровневые прайслисты использующие трехмерные массивы данных, расчет по которым уже реализован в Excel по типу - вводишь в A1 - ширину, B1 - длину, С1 - тип, D1 - подтип... и т.д. и на выходе в А2 получаешь цену, которая считается не простым перемножением, а выборками из табличных прайсов с округлениями учетом остатков и еще чертечем...

Последний раз редактировалось denismix; 20.03.2013 в 11:56. Причина: Забыл подписаться на тему.
denismix вне форума Ответить с цитированием
Старый 20.03.2013, 12:35   #2
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Нет ли какого-нибудь стандартного и простого пути для организации таких трюков?
написать код на VBA

Цитата:
Например вызывать его "типа как" функцию с передачей параметров
таких не встречал, но можно свою написать
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 20.03.2013, 12:59   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от nerv Посмотреть сообщение
написать код на VBA
В данном случае, он не всегда самый быстрый. Все зависит от организации исходного файла и количества требуемых цен.
В ряде случаев целесообразнее использовать БД для таких расчетов.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 20.03.2013, 14:17   #4
denismix
Новичок
Джуниор
 
Регистрация: 20.03.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от denismix Посмотреть сообщение
...вариант не мудрить с VB или С, а использовать что то типа надстроек...

В: -А нахрена тебе это? Считай в программе (считай используй мощьности БД).
О: -У меня сложные многоуровневые прайслисты...
Спасибо за поддержку, но хотелось бы более конструктивных советов.

Насколько реально написать что то типа функции вызова Excel (с передачей параметров и данных) на VB?

Подскажите пожалуйста, где искать инфу, а если можно бросьте простенький пример.

Мне не важна и не нужна скорость обработки - данные вводятся вручную, посточно и должны сразу же считаться Excelем, а результат заноситься в базу.

Последний раз редактировалось denismix; 20.03.2013 в 14:22.
denismix вне форума Ответить с цитированием
Старый 20.03.2013, 15:12   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
хотелось бы более конструктивных советов.
Извините, но в вашем вопросе нет ни конкретики, ни примеров файлов...
соответственно, ответы могут тоже только общего плана

Цитата:
Насколько реально написать что то типа функции вызова Excel (с передачей параметров и данных) на VB?
Реально.
(ну а что ещё можно ответить на этот вопрос... все реально, если есть желание и время)

Цитата:
где искать инфу
Я обычно ищу в Яндексе.

Вы написали столько много всего - какую конкретно инфу надо?
В учебниках вы вряд ли найдёте похожие примеры. (или искать придется долго)

Разбейте задачу на подзадачи, и задавайте более конкретные вопросы,
например, «как запустить Excel в фоновом режиме»
Тогда мы вам ответим, что так:
Код:
set XL = createObject("Excel.Application")
или, «как открыть определенную книгу»
Код:
set wb = xl.workbooks.open("полный путь к файлу XLS")
EducatedFool вне форума Ответить с цитированием
Старый 21.03.2013, 00:39   #6
denismix
Новичок
Джуниор
 
Регистрация: 20.03.2013
Сообщений: 5
По умолчанию Огромное спасибо за пример и разъяснения!!!

=) Очень трудно сформулировать конкретный вопрос, если не знаешь что спросить...
Поэтому и спрашивал без примеров и очень не конкретно.

Теперь все прояснилось, благодаря вашей наводки Яндекс помог найти хороший пример с пояснениями http://msdn.microsoft.com/ru-ru/libr...ffice.15).aspx

Проблема в том, что у InfoPath внедрение VB кода выглядит несколько сложнее чем у Excel. Непонятно как лучше\правильнее передавать в Excel данные. Как возвращать. Если вы сталкивались с этим подскажите пожалуйста.

Цитата:
Так же надеюсь, что кто-нибудь подскажет можно ли решить мою задачу через Надстройки COM InfoPath без использования MS Visual Studio, .NET, ets.
PS Если вызывать createObject("Excel.Application") из Excel то все понятно, и данные можно передать хоть через промежуточный файл, хоть напрямую между приложением и процессом.

Последний раз редактировалось denismix; 21.03.2013 в 00:48.
denismix вне форума Ответить с цитированием
Старый 21.03.2013, 01:26   #7
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Мне нужно из InfoPath (или, например, из Ворда, Акцесса) вызывать Excel,
Цитата:
set XL = createObject("Excel.Application")
Цитата:
Открыл определенную книгу
Цитата:
set wb = xl.workbooks.open("полный путь к файлу XLS")
на половину ваших вопросов уже ответили

Цитата:
Проблема в том, что у InfoPath внедрение VB кода выглядит несколько сложнее чем у Excel
в чем это выражается?
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 21.03.2013, 02:07   #8
denismix
Новичок
Джуниор
 
Регистрация: 20.03.2013
Сообщений: 5
По умолчанию

Ещё раз огромное спасибо! Я даже нашёл примеры и описание на сайте Майкрософт и потестил все это на Excel.

Выражается это в том, что у InfoPath нет встроенного редактора VB. Для внедрения туда кода необходимо инсталлировать кучу дополнительных программ и примочек, изучать всю эту ипаторию, включая специфику классов и объектов...

Представляете как мне будет обидно, если задача решается гораздо проще другим путем, например через Надстройки , а еще хуже и вовсе не решается написанием кода на VB либо С из за каких либо нюансов? InfoPath продукт относительно новый и как и положено у мелкомягких еще долго будет без нормальных описаний и с кучей особенностей на грани багов. поэтому прежде чем начинать изучать эту тему я хочу услышать экспертное мнение.

Последний раз редактировалось denismix; 21.03.2013 в 02:11.
denismix вне форума Ответить с цитированием
Старый 21.03.2013, 12:26   #9
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Я тут загуглил немного. Вики, говорит, что
Цитата:
Сложное поведение форм может быть запрограммировано на языках JScript, VBScript, C# и Visual Basic .NET, используя такие инструменты как Microsoft Script Editor (MSE) и Visual Studio Tools for Applications (VSTA). Кроме того, доступно средство Visual Studio Tools for Office (VSTO) — дополнение к Visual Studio, позволяющее вести всю разработку форм InfoPath в одной интегрированной среде.
однако, в 2007+ офисе MSE уже нет (насколько мне известно). Правильно я понимаю, что в InfoPath у вас html/xml документы?
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 21.03.2013, 12:46   #10
denismix
Новичок
Джуниор
 
Регистрация: 20.03.2013
Сообщений: 5
По умолчанию

Верно.
А значит для программирования поведения формы Нужно устанавливать все вышеперечисленное + .NET и начинать раскапывать как на этом писать. И не факт что получится как надо.

Поэтому пробую найти более простое решение. Мне кажется, что оно где то на поверхности, просто мы не в ту сторону копаем...

Вроде как на базе Excel можно создать некий объект, заточенный под определенную задачу и использующий только нужные ему возможности Excel - Надстройка COM.
Далее из программы вызывается этот объект с определенными параметрами (в InfoPath это можно сделать через Событие либо Правило) не связываясь сMicrosoft Script Editor (MSE) и Visual Studio Tools.

Вот это теперь и хочу для себя прояснить.
denismix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как задать "мерность" масива и для каждого "измерения" максимальный индекс vova_ Общие вопросы Delphi 5 31.07.2012 22:14
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42
Microsoft Office Outlook : Как убрать это: "<неи" ? НеиНеи Софт 0 09.06.2008 17:22
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03