我希望有人可以提供幫助。我正在嘗試構建一個從VBA啓動SAS的子例程。我一直在使用SAS工作區管理器。由於我在離舒適區很遠的地方漫步,我主要關注了我在這些twosources中發現的內容。以下是我想出了迄今爲止在VBA:從VBA運行SAS,完全訪問
Public Sub SubmitSasProg(usrid As String, passid As String, path As String, sasprog As String, varinput As String, Optional logreturn)
Dim obWsMgr As New SASWorkspaceManager.WorkspaceManager
Dim obSAS As SAS.Workspace
Dim xmlInfo As String
Set obSAS = obWsMgr.Workspaces.CreateWorkspaceByServer("Local", VisibilityProcess, Nothing, usrid, passid, xmlInfo)
Dim obStoredProcessService As SAS.StoredProcessService
Set obStoredProcessService = obSAS.LanguageService.StoredProcessService
obStoredProcessService.Repository = "file:" & path
obStoredProcessService.Execute sasprog, varinput
If IsMissing(logreturn) Then logreturn = 100000
MsgBox obSAS.LanguageService.FlushLog(logreturn)
End Sub
而且我有我自己一點點SAS方案,我們稱之爲「Test.sas」:
%let loopTimes=3;
*ProcessBody;
data a;
do x= 1 to &loopTimes;
y=x*x*x;
output;
end;
run;
現在,這條線將工作中庸之道罰款:
Call SubmitSasProg("myuserid", "mypassword", "somepath", "Test", "loopTimes=10")
但每當我試圖執行一個SAS proceedure是修改文件/ libnames等。我會得到一個無論是「此SAS會話的操作無效」或「用戶不能訪問」。 請注意,我在本地使用SAS,而不是在服務器上。 所以我猜測我沒有正確地使用我的SAS worksession登錄並且沒有權限。我認爲CreateWorkspaceByServer中的用戶ID和密碼參數應該登錄我。
所以我的問題是如何成功地啓動SAS會話與我的本地計算機上的憑據,並具有所有正常訪問我會有通過打開窗戶的environement。
只是爲了澄清,這SAS過程將在窗口environement做工精細:
Data _NULL_;
*x del C:\WINDOWS;
x mkdir C:\Users\Myname\Desktop\NewFolder;
run;
但是,如果從VBA開始它會失敗與代碼「這個SAS會話的操作無效」。 如果我嘗試編寫SAS數據集,會發生類似的情況。
我一直在尋找一段時間,但大多數線程都是關於SAS服務器會話。 任何幫助,將不勝感激。
哇...這是相當邊緣的情況下。我的猜測是,SAS進程正在啓動它的進程的權限下運行,並且VBA進程限制了權限(以防止惡意腳本嵌入無害的文檔中以接管您的機器)。 – JDB
您正在運行哪個版本的SAS和OS? –
這將是基本的SAS 9.2和Win 7 32b。也可能值得注意的是,我沒有在這臺機器上設置管理員帳號,儘管這並不影響SAS窗口環境。我會用管理員帳號試試我的運氣...誰知道。 – Pane