我希望这是一个提出这个问题的合适场所.
我最近在Excel中构建了一个数据分析工具,它通过将输入提交到SAS存储过程(作为"输入流"),运行流程并在Excel中显示结果来工作.
我还使用一些代码来检查并删除工作簿中的所有活动存储进程,然后再次运行该进程.
这前两次成功运行,但第三次尝试失败.它总是在第三次尝试失败,我无法弄清楚为什么.
Excel VBA是否有某种内存分配在这个阶段耗尽?还是其他一些最大化的缓冲区?我已经介入VBA代码的每一行,它似乎挂起(在第三次运行)在以下行:
SAS.InsertStoredProcess processLoc, _ outputSheet.Range("A1"), , , inputStream
用于启动Microsoft Office SAS加载项的代码:
Dim SAS As SASExcelAddIn Set SAS = Application.COMAddIns.Item("SAS.ExcelAddIn").Object
用于从目标输出表中删除存储过程的代码:
Dim Processes As SASStoredProcesses Set Processes = SAS.GetStoredProcesses(outputSheet) Dim i As Integer For i = 1 To Processes.Count ' MsgBox Processes.Item(i).DisplayName Processes.Item(i).Delete Next i
用于插入和运行存储过程的代码:
Dim inputStream As SASRanges Set inputStream = New SASRanges inputStream.Add "Prompts", inputSheet.Range("DrillDown_Input") SAS.InsertStoredProcess processLoc, _ outputSheet.Range("A1"), , , inputStream
干杯