【问题标题】:Remove sas content from Excel with VBA (MS Office Add-in)使用 VBA(MS Office 插件)从 Excel 中删除 sas 内容
【发布时间】:2014-07-30 13:19:43
【问题描述】:

我已经弄清楚如何使用 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

非常感谢!

PS。如果有人对 MS Office 的 SAS 插件有任何方便的参考,请提供链接

【问题讨论】:

    标签: vba excel sas


    【解决方案1】:

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

    sheetNameHere.Range("M:P").Clear
    

    如果您在设置后添加了该行

    Application.ScreenUpdating = False
    

    我相信这会模仿数据的“刷新”。

    【讨论】:

      【解决方案2】:

      这将从工作簿中删除所有旧组件。我不确定如何刷新所有内容,但假设它相似:

      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 帮助http://support.sas.com/kb/45/606.html

      【讨论】:

        猜你喜欢
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-14
        • 2016-05-12
        • 1970-01-01
        相关资源
        最近更新 更多