使用VBA(MS Office加载项)从Excel中删除sas内容

使用VBA(MS Office加载项)从Excel中删除sas内容,vba,excel,sas,Vba,Excel,Sas,我已经了解了如何使用MS Office加载项从Excel中运行SAS存储进程,使用输入流获取输出 每次运行此命令时,都会插入新列以容纳新的输出。此外,还会向工作簿中添加其他内容 我对SAS插件对象模型的理解很差,所以我希望有人能帮助我: 1在再次运行流程之前,使用VBA删除现有内容;或 2编写VBA代码以仅刷新相同输出范围内的现有内容 我使用的代码是: Sub sasTests() Application.ScreenUpdating = False Dim sas As SASExcelA

我已经了解了如何使用MS Office加载项从Excel中运行SAS存储进程,使用输入流获取输出

每次运行此命令时,都会插入新列以容纳新的输出。此外,还会向工作簿中添加其他内容

我对SAS插件对象模型的理解很差,所以我希望有人能帮助我:

1在再次运行流程之前,使用VBA删除现有内容;或 2编写VBA代码以仅刷新相同输出范围内的现有内容

我使用的代码是:

Sub sasTests()

Application.ScreenUpdating = False

Dim sas As SASExcelAddIn
Set sas = Application.COMAddIns.Item("SAS.ExcelAddIn").Object
Dim inputStream As SASRanges
Set inputStream = New SASRanges
inputStream.Add "Prompts", Worksheets("sasInput").Range("sasInput")
sas.InsertStoredProcess "/Shared Data/C139/sasTests", _
    Worksheets("sasOutput").Range("A1"), , , inputStream

End Sub
非常感谢


注:如果任何人对MS Office的SAS外接程序有任何方便的参考,请提供链接

您可以使用.clear方法清除包含现有内容的范围。如果此范围位于M:P列中,则可以使用以下行:

sheetNameHere.Range("M:P").Clear
如果在设置后添加了该行

Application.ScreenUpdating = False

我相信这将模拟数据的刷新。

这将从工作簿中删除所有旧组件。我不知道如何刷新所有内容,但假设其类似:

Sub DeleteSasContent()Dim sas As SASExcelAddIn
Set sas = Application.COMAddIns.Item("sas.exceladdin").Object

Dim stpList As SASStoredProcesses
Dim dataList As SASDataViews
Dim pivotList As SASPivotTables
Dim reportList As SASReports

Set stpList = sas.GetStoredProcesses(ThisWorkbook)
Set dataList = sas.GetDataViews(ThisWorkbook)
Set pivotList = sas.GetPivotTables(ThisWorkbook)
Set reportList = sas.GetReports(ThisWorkbook)

For i = 1 To stpList.Count
stpList.Item(i).Delete
Next i

For i = 1 To dataList.Count
dataList.Item(i).Delete
Next i

For i = 1 To pivotList.Count
pivotList.Item(i).Delete
Next i

For i = 1 To reportList.Count
reportList.Item(i).Delete
Next i

End Sub
请参见此处的SAS帮助