Visual Basic и Excel

Программирование на Visual Basic for Applications
Валера
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 31.01.2005 (Пн) 11:11

Visual Basic и Excel

Сообщение Валера » 05.07.2005 (Вт) 9:54

Кто может помогите... Не могу из проекта вызвать макросы (SolverOk и SolverSolve) программы Поиск решения (Excel). Пробовал использовать функции ExecuteExcel4Macro, Run, но не получается.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.07.2005 (Вт) 10:00

Функции солвера вызываются точно так же, как и все остальные функции. Просто по имени без всяких Run.
Просто перед этим нужно поставить ссылку на Solver.xla в References.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Валера
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 31.01.2005 (Пн) 11:11

Visual Basic и Excel

Сообщение Валера » 05.07.2005 (Вт) 10:38

Привет всем!
Проблема моя глубже.
Дано из проекта VB обратиться к макросам Поиска решения (Excel).
Причем, в общем случае, неизвестно загружена библиотека (Solver.xla) в память книги Excel или нет (используя механизм раннего связывания). Очевидно надо использовать механизм позднего связывания функцией CreateObject(..... что здесь ставить для доступа к программе Solver, не знаю).

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.07.2005 (Вт) 12:31

Ещё раз.

В проекте должна стоять ссылка на solver.xla. Потому что solver - не COM-объект, а набор функций.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 05.07.2005 (Вт) 13:43

Попробуй записать макрос и подключить надстройку, а в коде посмотри что получилось.

Только, если solver.xla нет физически на диске, нужно носить за собой :(
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 05.07.2005 (Вт) 13:47

GSerg

solver.xla - это AddIns к Excel, и подключать его нужно в Excel'е, а в проекте VB посредством интерфейса Екселя использовать. Или возможно по другому?
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.07.2005 (Вт) 14:13

Открой редактор VBA. Зайди в меню Tools-References. Нажми Browse. Выбери Microsoft Excel files (*.xls, *.xla). Найди Solver.xla. Нажми OK.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 05.07.2005 (Вт) 14:56

Понятьно, а я его искал в референсах ВБ.
Кстати у меня рядом с solver.xla лежит solver32.dll экспортирует только одну функцию Solve. И запустить её не получилось. :(

Пытаюсь так:
Код: Выделить всё
Private Declare Function Solve Lib "c:\Program Files\Microsoft Office\OFFICE11\Library\SOLVER\SOLVER32.DLL" (Optional SetCell As Variant, Optional MaxMinVal As Variant, Optional ValueOf As Variant, Optional ByChange As Variant) As Variant

Private Sub Command1_Click()
Solve SetCell:="$J$4", MaxMinVal:=1, ValueOf:="0", ByChange:="$A$2"
End Sub


Пишет не найден файл. Переносил файл в корень диска, результат одинаков
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.07.2005 (Вт) 14:58

А не надо её запускать.

Подключаешь xla и юзаешь SolverSolve.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 05.07.2005 (Вт) 15:05

Да это понятно и мне сейчас не нужно.

Только понимаешь, поглядел я на код в solver.xla и не нашёл там вызовов внешних функций. Хотя может проглядел чего. :roll:
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.07.2005 (Вт) 15:23

Чесслово, разговор про Фому и Ерему.

GSerg нормально ответил на вопрос человеку. Что разводить дискуссию на пустом месте то?

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 05.07.2005 (Вт) 15:32

Ну ладно, сразу надо было сказать, что нельзя :(

Я пытался расширить свой кругозор. :wink:

Ну на нет и суда нет :D
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Валера
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 31.01.2005 (Пн) 11:11

Visual Basic и Excel

Сообщение Валера » 06.07.2005 (Ср) 7:35

Всем спасибо!
Сам нашел, правда пришлось повозиться 2 с лишнем дня....
и все из-за "каких-то" кавычек.......


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 59

    TopList