我正在运行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以及其他一些功能来实现这一目的。
答案 0 :(得分:3)
那些讨厌的错误消息!你非常接近,但试试这种语法:
%let xlsfile = %STR("")C:\Data\Excel Workbook.xlsx%STR("");
%let csvfile = %STR("")C:\Data\CSV File..csv%STR("");
答案 1 :(得分:2)
双引号内的双引号会解析为单个双引号字符,即......
x """c:\program files\office\excel.exe"" stuff stuff stuff ""stuff"" stuff";
应该工作得很好。不要担心“标识符”消息,这主要是说
"01JAN2013"d
可能与其他事情有关。你可以在最后一个之后添加一个空格“如果在日志中有这个问题。