2 votes

Sas proc pdf ne exporte pas les fichiers

Je tente d'exporter vers un emplacement spécifique un ensemble d'environ 15 fichiers PDF, en utilisant l'ODS PDF. Alors qu'en utilisant le même code mais en exportant avec ODS EXCEL - j'obtiens d'excellents résultats. Avec l'ODS PDF - je n'obtiens aucun résultat.

PROCÉDURE INITIALE:

PROC SQL ;
SELECT DISTINCT BId INTO: B_List separated by ' '
FROM work.Pop ;
QUIT ;

VOICI LE CODE AVEC ODS EXCEL:

%MACRO Export_Excel ;
%DO i = 1 %TO 15 ;
    %LET b_number = %SCAN(&B_List., &i.) ;

    PROC EXPORT DATA=work.Final_Pop (WHERE=(BId = &b_number .))
    OUTFILE="&Folder.\Rapport&b_number ..xlsx"
    DBMS=XLSX REPLACE ;
    SHEET=b_&b_number . ;
    RUN ;
%END ;
%MEND Export_Excel ;

VOICI LE CODE AVEC ODS PDF:

%MACRO Export_PDF ;
%DO i = 1 %TO 15 ;
    %LET b_number = %SCAN(&B_List., &i.) ;
    ODS PDF
    FILE ='&Folder.Bakara_&b_number..pdf' STYLE = ocean ;
    ODS PDF TEXT = "TEST_&b_number." ;
    PROC PRINT DATA=work.Final_Pop (WHERE=(BId = &b_number.)) NOOBS ;
    RUN ;
    ODS PDF CLOSE ;
%END ;
%MEND ;

1voto

Stu Sztukowski Points 2616

Deux problèmes :

  1. L'emplacement du fichier de sortie doit être entre guillemets. Les guillemets simples ne résolvent pas les variables de macro.
  2. Il manque un \ entre le dossier de sortie et le nom du fichier de sortie.

La ligne correcte devrait être :

FILE = "&Folder.\Bakara_&b_number..pdf" STYLE = ocean ;

Code corrigé :

%MACRO Export_PDF ;
%DO i = 1 %TO 15 ;
    %LET b_number = %SCAN(&B_List., &i.) ;
    ODS PDF
    FILE = "&Folder.\Bakara_&b_number..pdf" STYLE = ocean ;
    ODS PDF TEXT = "TEST_&b_number." ;
    PROC PRINT DATA=work.Final_Pop (WHERE=(BId = &b_number.)) NOOBS ;
    RUN ;
    ODS PDF CLOSE ;
%END ;
%MEND ;

0voto

Richard Points 6

Si votre solution permet des noms de fichiers numérotés, vous pouvez utiliser l'option NEWFILE=BYGROUP

Example:

data c;
  set sashelp.class;
  letter = substr(name,1,1);
run;

ods pdf file="c:\temp\class-byname-.pdf" newfile=bygroup;

proc print noobs data=c;
  by letter;
  var name age sex height weight;
run;

ods pdf close;

Idéalement, SAS améliorera l'interaction NEWFILE pour permettre de spécifier le nom de fichier avec #BYVAL et que la valeur de la variable by fasse partie du nom de fichier de sortie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X