Настройка и запуск "Поиска решения" в Ms Excel

Тема в разделе "OLE технологии", создана пользователем Azrael, 1 янв 2007.

  1. Azrael

    Azrael Гость


    Каммент модера
    Отличная тема но необходима редакция так как:
    1. Приведите привер ,напишите плз, функцию заполнения какимито значениями , для наглядности(просто выдрать кусок кода не стоит, это только запутает человека ). В идеале опишите задачу, решение и приведённый код станет понятен )))
    2. Допишите хотя-бы примитивный обработчик ошибок
    3. Вы уверены что в Англ. версии надстройка называеться "Поиск решения" ?
    Код (Text):
    'Определяем International Word'a
    If ExcWin.Application.International( 1 ) = 1 Then 'English
    ....
    Elseif ExcWin.Application.International( 1 ) = 7 Then ' Rus
    ...
    End If
    4. Не вводите в заблуждение людей, здесь Вы использете именно оле-технологии(CreateObject) и напрямую(не всё то OLE что VBA)


    Поиск решения в MS Excel - неплохая надстройка, но вот чтобы запустить ее из другого приложения - приходится несколько извратиться, поскольку эта надстройка не является созданием Microsoft'а - создана сторонними разработчиками, поэтому не получается напрямую использовать OLE-технологии (т.е. создать руками макрос и посмотреть код, созданный Excel (работать не будет!)
    Делюсь частью кода непосредственно для вызова и настройки поиска решения:
    Код (Text):
            ' создание файла MS Excel
    Set ms=CreateObject("Excel.Application")
    On Error Resume Next
    Call ms.Workbooks.Add()
    If Err<>0 Then
    Msgbox "Не удалось создать файл MS Excel !",16,stTitle
    Err=0
    Goto ErrLabel
    End If
    On Error Goto ErrLabel

    ms.ReferenceStyle=-4150 ' стиль ссылок "R1C1"

    ' переход на первый лист
    Set sheet=ms.ActiveWorkbook.Worksheets(1)
    sheet.Activate

    ' надстройка "Поиск решения"
    Set SolverAddIn=ms.AddIns("Поиск решения")

    ' книга Solver.xla
    Set wb=ms.Workbooks.Open(SolverAddIn.FullName)
    Call ms.Run("Solver.xla!Auto_Open")

    ' Задание целевой ячейки и изменяемых ячеек
    Call ms.Run("Solver.xla!SolverOk", sheet.Cells(numRowTotals,2), 2, 0, sheet.Range(sheet.Cells(numRowK,2),sheet.Cells(numRowK+Ubound(arr)-1,2)) )

    ' Задание ограничений
    ' ограничения на кол-во комплектов: целое, неотрицательное число
    Call ms.Run("Solver.xla!SolverAdd", sheet.Range(sheet.Cells(numRowK,2),sheet.Cells(numRowK+Ubound(arr)-1,2)),4,"целое" )
    Call ms.Run("Solver.xla!SolverAdd", sheet.Range(sheet.Cells(numRowK,2),sheet.Cells(numRowK+Ubound(arr)-1,2)),3,"0" )
    ' ограничение: итоговое кол-во деталей >= требуемое кол-во деталей
    For i%=1 To kolD
    Call ms.Run("Solver.xla!SolverAdd", sheet.Cells(numRowTotals,i%+2),3,"R" & Cstr(numRowNeed) & "C" & Cstr(i%+2) )
    Next i%

    ms.Visible=True

    ' Запуск поиска решения (с сохранением найденного решения)
    Call ms.Run("Solver.xla!SolverSolve")
     
Загрузка...
Похожие Темы - Настройка запуск Поиска
  1. anna
    Ответов:
    16
    Просмотров:
    402
  2. savl
    Ответов:
    12
    Просмотров:
    349
  3. ivan12387123
    Ответов:
    0
    Просмотров:
    174
  4. k85
    Ответов:
    7
    Просмотров:
    863
  5. anna
    Ответов:
    0
    Просмотров:
    740

Поделиться этой страницей