Olá Amigos,
Estou usando o código abaixo para abrir o excel e executar uma macro, responsável por rodar o Solver.
Private Sub Comando10_Click()
Dim oApp As Object
Set oApp = CreateObject("Excel.Application")
oApp.Workbooks.Open ("C:\Concentrado Custo Mínimo\Vale Verde concentrado.xlsm")
oApp.Visible = True
'macro que atualiza os vínculos das planilhas do excel com o access
oApp.Run "Plan2.Atualizar1"
'macro que roda o Solver
oApp.Run "Plan1.Solver"
oApp.Quit
Set oApp = Nothing
End Sub
No entanto, mesmo após rodar esse comando, quando eu vou no arquivo xlsm e o abro, os dados estão inalterados - a aplicação roda visível (oApp.Visible = True) e é possível perceber as alterações durante a execução do procedimento. O código que utilizo na Macro "Plan1.Solver" é o seguinte:
Sub Solver()
SolverReset
SolverOk setcell:=Range("p9"), maxminval:=2, ValueOf:="0", bychange:=Range("n2:n8")
SolverAdd CellRef:=Range("n2:n8"), Relation:=1, FormulaText:="$o$2:$o$8"
SolverAdd CellRef:=Range("z2:ac2"), Relation:=3, FormulaText:="$v$2:$y$2"
SolverAdd CellRef:=Range("n9"), Relation:=2, FormulaText:="100"
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1, ReportArray:=Array()
End Sub
Como faço para o excel fechar com as alterações realizadas pelo solver? Conseguem localizar onde falho nesse código??
Estou usando o código abaixo para abrir o excel e executar uma macro, responsável por rodar o Solver.
Private Sub Comando10_Click()
Dim oApp As Object
Set oApp = CreateObject("Excel.Application")
oApp.Workbooks.Open ("C:\Concentrado Custo Mínimo\Vale Verde concentrado.xlsm")
oApp.Visible = True
'macro que atualiza os vínculos das planilhas do excel com o access
oApp.Run "Plan2.Atualizar1"
'macro que roda o Solver
oApp.Run "Plan1.Solver"
oApp.Quit
Set oApp = Nothing
End Sub
No entanto, mesmo após rodar esse comando, quando eu vou no arquivo xlsm e o abro, os dados estão inalterados - a aplicação roda visível (oApp.Visible = True) e é possível perceber as alterações durante a execução do procedimento. O código que utilizo na Macro "Plan1.Solver" é o seguinte:
Sub Solver()
SolverReset
SolverOk setcell:=Range("p9"), maxminval:=2, ValueOf:="0", bychange:=Range("n2:n8")
SolverAdd CellRef:=Range("n2:n8"), Relation:=1, FormulaText:="$o$2:$o$8"
SolverAdd CellRef:=Range("z2:ac2"), Relation:=3, FormulaText:="$v$2:$y$2"
SolverAdd CellRef:=Range("n9"), Relation:=2, FormulaText:="100"
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1, ReportArray:=Array()
End Sub
Como faço para o excel fechar com as alterações realizadas pelo solver? Conseguem localizar onde falho nesse código??