Mam nadzieję, że ktoś może pomóc. Próbuję zbudować podprogram do uruchomienia SAS z VBA. Robiłem to z SAS Workspace Manager. Gdy przechodzę dość daleko od mojej strefy komfortu, śledzę głównie to, co znalazłem w tych twosources. Oto co wymyśliłem tak daleko w VBA:Uruchom SAS z VBA z pełnym dostępem
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
I muszę sobie mały program SAS, nazwijmy go „Test.sas”:
%let loopTimes=3;
*ProcessBody;
data a;
do x= 1 to &loopTimes;
y=x*x*x;
output;
end;
run;
Teraz ta linia będzie działać Juste porządku :
Call SubmitSasProg("myuserid", "mypassword", "somepath", "Test", "loopTimes=10")
Ale gdy próbuję wykonać proceedure SAS, który modyfikuje pliki/libnames itp dostanę albo „Operacja niemożliwa dla tej sesji SAS” lub „Użytkownik nie ma dostępu”. Należy pamiętać, że używam SAS lokalnie, a nie na serwerze. Zgaduję więc, że nie jestem poprawnie zalogowany z moją sesją SAS i brakiem pozwolenia. Myślałem, że parametry userID i password w CreateWorkspaceByServer mają mnie zalogować.
Moje pytanie brzmi: jak z powodzeniem uruchomić sesję SAS z moimi danymi uwierzytelniającymi na moim lokalnym komputerze i mieć dostęp do wszystkich normalnych uprawnień otwierając otoczenie okienne.
Wystarczy, aby wyjaśnić ten proces SAS będzie działać dobrze w okienkowym environement:
Data _NULL_;
*x del C:\WINDOWS;
x mkdir C:\Users\Myname\Desktop\NewFolder;
run;
Ale to nie z „Operacja niemożliwa dla tej sesji SAS” kodu, jeśli zaczęło się od VBA. Coś podobnego się dzieje, gdy próbuję pisać zestawy danych SAS.
Już od jakiegoś czasu szukam, ale większość wątków dotyczy sesji serwerów SAS. Każda pomoc będzie doceniona.
Wow ... jest to scenariusz skrajnej krawędzi. Domyślam się, że proces SAS działa zgodnie z prawami procesu, który go uruchomił i że proces VBA ma ograniczone prawa (aby zapobiec umieszczaniu złośliwych skryptów osadzonych w niewinnie wyglądających dokumentach na komputerze). – JDB
Jaką wersję SAS i OS używasz? –
To byłby Base SAS 9.2 i Win 7 32b. Warto również zauważyć, że nie mam konta administratora na tym komputerze, ale nie przeszkadza to środowisku w oknie SAS. Spróbuję szczęścia z kontem administratora ... kto wie. – Pane