6

誰かが助けてくれることを願っています。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 サーバー セッションに関するものです。どんな助けでも大歓迎です。

4

2 に答える 2

0

以前、SAS/Intrnet に必要なセキュリティ ポリシーが設定されていないという問題が発生したことは知っています。これで問題が解決するとは保証できませんが、次の点を確認してください。

コントロール パネル -> 管理ツール -> ローカル セキュリティ ポリシー

セキュリティ設定 -> ローカル ポリシー -> ユーザー権利の割り当て -> バッチ ジョブとしてログオン

SAS がジョブの実行に使用するアカウントにこの権限があることを確認してください。

また、test.sas プログラムがデータセットを書き込もうとして失敗したということですか?

また、私がここで経験したのと同じ問題がいくつか発生している可能性があります。

Windows で SAS と mkdir を使用してディレクトリ構造を作成する

于 2013-07-18T22:01:18.720 に答える