excel VBA 控制 aspen simulation workbook的难题? 最近尝试使用 aspen simulation workbook控制aspen plus的模型,打算从excel表格中读取数据,然后赋值给指定单元格(与模型关联的),从而达到批量 向模型物流赋值,模型运算,返回结果等操作,数据少的话可以用case study,但如果数据太多,向case study输入数据就显得太麻烦了。我尝试用vba来实现这一功能,如果在vb环境下用 f8逐步运行程序,一切都没有问题,计算计算结果也没有问题。但如果以macro(宏)的形式运行,就会提示 “simulation xx was unable to solve due to the following errors: solver is already running"., 得到的结果也不准确。下面是vba的代码,问题似乎就是里面的第二个for循环。请大家讨论一下解决的方案。aspen simulation workbook用起来真的很方便,但很少有相关的帖子和教程。 我来再解释一下。如果你想改变输入物流的值,来分别获得计算结果。一种方法是每一次手动改变 输入物流的值,然后手动点击run或者initialized and run.这种方法对少量数据可以,但10几组以上的话,几比较麻烦。如果通过aspen simulation workbook与excel vba的结合,就可以达到自动改变输入物流的值,自动启动aspen solver进行计算,然后返回结算结果。 option base 1 sub arr() dim x as integer, y as integer, i as integer dim arr(4, 2) as double for x = 1 to 4 for y = 1 to 2 arr(x, y) = cells(x, y + 11) ' 用单元格区域的值构造一个数组(矩阵)arr,假设有4行2列数据存在excel表格中 next y next x for i = 1 to 4 cells(2, 2) = arr(i, 1) ' assign row 1, col i of arr to cells(2,2) ‘将arr的元素顺序赋给 指定单元格(与模型关联的输入项) cells(3, 2) = arr(i, 2) ' assign row 2, col i of arr to cells(2,2) ‘cells (2,2)和cells(3,2)是与model关联的物流输入值 updatefromexcel ’根据上面的赋值更新model的物流输入值 aswrun ‘运行模型进行计算 cells(i, 14) = cells(4, 2).value ‘计算得到的结果依次copy到某一列 next i end sub sub updatefromexcel() application.run ("aspensimulationworkbook.xla!aswupdatemodelfromexcel") ’这一步不是必需的 end sub sub aswrun() application.run ("aspensimulationworkbook.xla!aswrunactivesimulation") ‘调用aspen simulation workbook的 run simulation宏 end sub 上述的code逐步执行没有问题,比从data browser里面逐一改变物流值方便很多,问题是不能以宏的形式运行,需要频繁按f8。如果可以做到自动循环就完美了(获得一组输入值,执行一次run命令,得到结果;再获得另一组输入值,,执行run命令。。。。。。。。)查看更多