4

我正在运行 SAS 的 VBA 程序。用于此的 SAS 代码基本上如下所示:

%let worksheet =&i; *worksheet number;
%let xlsfile = %STR(""C:\Data\Excel Workbook.xlsx"");
%let csvfile = %STR(""C:\Data\CSV File..csv"");


x 'cd "C:\Data\MN2013\Alignment\Data\SAS Programs"';
x "XlsWsToCsv.vbs &xlsfile &worksheet &csvfile";

我需要能够在 xlsfile 和 csvfile 中的文件路径的开头和结尾包含两个双引号(即“”),以便 VBA 程序识别文件路径中的空格并正确运行。

我的问题:

我使用 SAS 9.3 在 SAS Enterprise Guide 中运行它。在我的日志中,直接在读入变量定义后,双引号用红色下划线(通常表示错误)和下面的数字49。没有错误消息,而是以绿色显示我收到以下注释:

NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS 
         release.  Inserting white space between a quoted string and the succeeding 
         identifier is recommended.

对我来说,这表示 SAS 正在阅读这些双引号。不知何故,它们只是被部分掩盖了。我的 VBA 程序运行,所以我可以继续这个;但我喜欢干净的错误日志。有人对如何完全屏蔽我的 xlsfile 和 csvfile 变量有任何建议吗?我尝试使用 %STR(如上面的示例所示)、%BQUOTE、%SUPERQ 和其他一些东西来完成这项工作。

4

2 回答 2

3

那些讨厌的错误信息!您非常接近,但请尝试使用以下语法:

%let xlsfile = %STR("")C:\Data\Excel Workbook.xlsx%STR("");
%let csvfile = %STR("")C:\Data\CSV File..csv%STR("");
于 2013-07-01T19:27:22.550 回答
2

双引号内的双双引号解析为单个双引号字符,即...

x """c:\program files\office\excel.exe"" stuff stuff stuff ""stuff"" stuff";

应该可以正常工作。不要担心“标识符”消息,这主要是在说类似

"01JAN2013"d 

可能与其他事情。如果在日志中有问题,您可以在最后一个 " 之后添加一个空格。

于 2013-07-01T18:09:27.627 回答