誰かが助けてくれることを願っています。私はVBAからSASを立ち上げるサブルーチンを構築しようとしています。私はSAS Workspace Managerを使用しています。私が私の快適ゾーンからかなり遠くを歩いているので、私はこれらの中で見つけたものをほとんど追ってきました。twosources。フルアクセスで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」:ここで私はこれまでのVBAで思い付いたものです
%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ワークセッションに正しくログインしておらず、権限がないと推測しています。私はCreateWorkspaceByServerのuserIdとpasswordパラメータが私をログインさせることになっていると思った。
私の質問は、ローカルコンピュータの資格情報でSASセッションを正常に開始し、窓のある環境を開くことによって。
だけ明確にするために、この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のバージョンはどうですか? –
これはBase SAS 9.2とWin 7 32bです。また、私はこのマシンに管理者アカウントを持っていないことに気付くかもしれませんが、SASウィンドウ環境を邪魔することはありません。私は運営者のアカウントで知っているつもりです。 – Pane