誰かが助けてくれることを願っています。VBA から SAS を起動するサブルーチンを作成しようとしています。私は SAS Workspace Manager でそうしてきました。私は自分のコンフォート ゾーンからかなり離れた場所を散歩しているので、これら2 つ の情報源で見つけたものにほとんど従いました。VBAでこれまでに思いついたのは次のとおりです。
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 手順を実行しようとすると、「この SAS セッションに対して無効な操作」または「ユーザーにアクセス権がありません」というメッセージが表示されます。 サーバーではなくローカルで SAS を使用していることに注意してください。 そのため、SAS ワークセッションで正しくログインしておらず、権限がないと推測しています。CreateWorkspaceByServer の userId と password パラメーターは、私がログインすることになっていると思いました。
したがって、私の質問は、ローカルコンピューターで資格情報を使用してSASセッションを正常に開始し、ウィンドウ環境を開くことで通常のアクセスをすべて取得する方法です。
明確にするために、この SAS プロセスはウィンドウ化された環境で正常に機能します。
Data _NULL_;
*x del C:\WINDOWS;
x mkdir C:\Users\Myname\Desktop\NewFolder;
run;
ただし、VBA から開始すると、「この SAS セッションに対して無効な操作」というコードで失敗します。SAS データセットを書き込もうとすると、似たようなことが起こります。
しばらく探していましたが、ほとんどのスレッドは SAS サーバー セッションに関するものです。どんな助けでも大歓迎です。