我通过VBA中的olesas步骤呼叫SAS。我的excel表中有一个字段,表示"成功","处理"或"失败"。
如果遇到任何错误,我设置sas退出并输出"成功"作为最后一步(如果它运行完成且没有错误)。
我正在使用do while循环来检查SAS是否仍然处于忙碌状态(olesas.busy =" True")以在sas运行时暂停VBA,然后,如果块未显示成功,则将块更改为"失败"。这一切似乎都运行良好,除了即使SAS已经终止,最后一步仍然执行并更改块以说"成功"。关于为什么会发生这种情况的任何想法?
do while (OleSAS.busy = "True")
application.wait (now + TimeValue("0:00:02"))
Loop
if sheet1.range("box")="busy" then sheet1.range("box")="failed"
我不能分享剩下的代码,但是我使用过" errabend"如果出现错误,则使sas退出的声明。我本以为do while会让所有事情都暂停,直到sas完成,然后只有在最后的sas步骤没有完成时才变为失败。
SAS代码:
data _null_;
file new ;
put 'Successful';
run;
VBA致电
olesas.submit ("filename new DDE 'excel'|" + workbookpath + "\[" + workbookname + "]" + sheet1 + r1c1:r1c1' notab;")