Spero che qualcuno possa aiutarti. Sto cercando di creare una subroutine per avviare SAS da VBA. Lo sto facendo con SAS Workspace Manager. Mentre sto passeggiando molto lontano dalla mia zona di comfort, ho seguito principalmente ciò che ho trovato in questi twosources. Ecco quello che mi è venuto in mente finora in VBA:Esegui SAS da VBA con accesso completo
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
E io stesso ho un piccolo programma SAS, chiamiamolo "Test.sas":
%let loopTimes=3;
*ProcessBody;
data a;
do x= 1 to &loopTimes;
y=x*x*x;
output;
end;
run;
Ora questa linea funzionerà juste bene :
Call SubmitSasProg("myuserid", "mypassword", "somepath", "Test", "loopTimes=10")
Ma ogni volta che provo ad eseguire un proceedure SAS che modifica i file/libnames ecc Prendo un o una "operazione non valida per questa sessione SAS" o "utente non dispone di accesso". Si prega di notare che sto usando SAS localmente, non su un server. Quindi immagino di non aver effettuato correttamente l'accesso con la mia sessione SAS e di non avere il permesso. Ho pensato che i parametri userId e password in CreateWorkspaceByServer dovessero connettermi.
Quindi la mia domanda sarebbe come avviare con successo la sessione SAS con le mie credenziali sul mio computer locale e avere tutto il normale accesso che avrei aprendo l'ambiente finestra.
Giusto per chiarire, questo processo SAS avrebbe funzionato bene nel environement finestra:
Data _NULL_;
*x del C:\WINDOWS;
x mkdir C:\Users\Myname\Desktop\NewFolder;
run;
ma sarebbe fallire con un "Operazione non valida per questa SAS sessione" codice se iniziata da VBA. Qualcosa di simile accade se provo a scrivere dataset SAS.
Ho cercato un po 'di tempo ma la maggior parte dei thread riguarda le sessioni del server SAS. Qualsiasi aiuto sarebbe apprezzato.
Wow ... questo è piuttosto il caso limite. La mia ipotesi è che il processo SAS sia in esecuzione con i diritti del processo che l'ha avviato e che il processo VBA abbia diritti limitati (per impedire che script dannosi incorporati in documenti dall'aspetto innocuo prendano il controllo del computer). – JDB
Quale versione di SAS e OS è in esecuzione, per favore? –
Quello sarebbe Base SAS 9.2 e Win 7 32b. Potrebbe anche valere la pena notare che non ho un account amministratore su questa macchina, sebbene ciò non infastidisca l'ambiente con finestra SAS. Cercherò la fortuna con un account amministratore ... chissà. – Pane