2017-03-17 20 views
0

私は新しいSASユーザーです。私はSASへのExcelファイルのインポートに関する質問があります。SASでExcelファイルを動的にインポートする方法は?

私の共有ドライブには、自分のPC上で異なってマップされているExcelファイルがあります。 (パスは1台のPC上でSドライブとラベル付けされ、同じパスは別のPC上でYドライブとラベル付けされています)。 PCを交換してSASプログラムを実行するたびに、Excelファイルを再マップしなかったため、通常はインポートできません。

PCを移動するたびにExcelファイルへのパスを再マップせずに、このフォルダからExcelファイルをインポートする方法はありますか?ご協力いただきありがとうございます。

+1

私はSASについて何も知らないが、パスに関しては代わりにUNCを使うべきである。 https://www.lifewire.com/unc-universal-naming-convention-818230 –

+0

合意。 'cmd.exe'に' C:> net use'と入力すると、あなたのネットワークドライブ文字がどのサーバにアドレス指定されているのかがわかります。 – Hugs

答えて

1

確かに1つの方法は、コメントに記載されているようにUNCを使用することです。 UNCは、//share/folder/otherfolder/file.xlsxと似ており、ドライブのマッピングに依存しないパスです。

ただし、それが何らかの理由で実現できない場合は、それを回避することはできます。どのように行うかは、まずSASの運用方法によって異なります。

エンタープライズガイドを使用して接続している場合は、たとえば、promptが最適です。プロンプトはマクロ変数を定義し、マクロ変数はファイル名(またはドライブ文字)として使用できます。

他の方法を使用している場合でも、さまざまなフォームのプロンプトが表示される可能性がありますが、ファイル名(またはlibname)を定義するローカルファイルを作成したり、ドライブ文字をマクロ変数。

SASを完全に管理している場合、これは(この1つのプログラムだけでなく)一般的に有用なものです。autoexec.sasに何かを入れることができます。このレベルの制御がない場合、またはこのプログラムのみに固有のものを使用する場合は、両方のPCおよび各PC上の同じ場所(たとえばc:¥SASFiles)にあるファイルを作成することができます異なるファイル名/ libname /マクロ変数(そのPCに適したもの)を持っています。その後、あなたのプログラムの先頭にそのファイル%includeがあります。

最後に、PC名やその他の環境変数を使用して、現在稼動しているマシンを特定し、ロジックを駆動するために使用することができます。たとえば:

%macro define_path; 
    %global path_letter; 
    %if &syshostname = 55PC1010G %then %do; 
    %let path_letter=P; 
    %end; 
    %else %let path_letter=Y; 
%mend define_path; 
%define_path; 
%put &=path_letter; 

あなたは値が何であるかを確認するために、各マシン上で%put &=syshostnameしたいと思うが、把握するのに十分な簡単なはずです。何らかの理由で&syshostnameが定義されていない場合、%put _automatic_は何かを教えてくれますし、変数の1つが十分に役立つはずです。

関連する問題