请选择 进入手机版 | 继续访问电脑版
楼主: 凡尘梦1990
5344 10

我用SAS宏写的导入多个数据集的代码,运行有问题 [推广有奖]

  • 5关注
  • 2粉丝

讲师

46%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
3.0013
学术水平
5 点
热心指数
7 点
信用等级
0 点
经验
430 点
帖子
187
精华
0
在线时间
836 小时
注册时间
2012-10-9
最后登录
2024-2-1

凡尘梦1990 学生认证  发表于 2014-10-24 08:07:32 |显示全部楼层 |坛友微信交流群
15论坛币
%macro import(file);
proc import datafile="d:\sas\141024\&file.xlsx"
                        out=&file
                        dbms=excel2007 replace;
                        getnames=yes;
run;
%mend import(file);
%import(balsheet);
%import(ind.roa);
%import(locat);
%import(nation);
run;

运行后提示  WARNING: 已忽略宏定义“IMPORT”的 %MEND 语句中的无关文本。
ERROR: 无法打开文件“d:\sas\141024\balsheetxlsx.XLS”。该文件不存在或已被另一用户打开。或者您需要相应权限才能查看其数据。

请高手解答,在导入数据是并没有同时打开和使用Excel
请各位大神告知小弟 该如何修改这段程序呢?

最佳答案

sniperhgy 查看完整内容

楼主你好,关于楼主写的宏,我有几点建议: 1. 楼主注意到log里面的那个warning了吗? 这个是由于%mend import(file);造成的,如果改成%mend import;,就可以了,至于为什么这么改,请参考如何定义一个宏的解说,在www.sas.com里面找 2.我在三楼里面特意把&file后面应该加两个"."的事情强调了一下,为何楼主还是写一个“.”?请看那个ERROR,ERROR: 无法打开文件“d:\sas\141024\balsheetxlsx.XLS”,楼主的文件难道不是bals ...
关键词:SAS宏 数据集 excel2007 warning replace replace import nation file
就这样吧。
sniperhgy 发表于 2014-10-24 08:07:33 |显示全部楼层 |坛友微信交流群
凡尘梦1990 发表于 2014-10-24 15:48
代码已经写在第一个帖子了。。我把log运行记录也贴出来

89   %macro import(file);
楼主你好,关于楼主写的宏,我有几点建议:
1. 楼主注意到log里面的那个warning了吗? 这个是由于%mend import(file);造成的,如果改成%mend import;,就可以了,至于为什么这么改,请参考如何定义一个宏的解说,在www.sas.com里面找

2.我在三楼里面特意把&file后面应该加两个"."的事情强调了一下,为何楼主还是写一个“.”?请看那个ERROR,ERROR: 无法打开文件“d:\sas\141024\balsheetxlsx.XLS”,楼主的文件难道不是balsheet.xlsx吗?为何会变成balsheetxlsx.xls?那就是因为少写了一个“.”造成的。

请楼主注意别人回复的细节,再试试看,如果不行,咱们继续讨论。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
凡尘梦1990 + 5 + 2 + 2 + 2 精彩帖子

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

凡尘梦1990 学生认证  发表于 2014-10-24 08:08:05 |显示全部楼层 |坛友微信交流群
补充一下,我用的是sas9.3

使用道具

sniperhgy 发表于 2014-10-24 10:26:59 |显示全部楼层 |坛友微信交流群
请将第一句话改为 :
  1. proc import datafile="d:\sas\141024\&file..xlsx"
复制代码

请注意,那个&file后面是两个点,还有一点,如果楼主用的是64位的SAS9.3,外加32位的excel,建议将dbms改成excelcs,否则容易出错。
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
凡尘梦1990 + 5 + 1 + 1 + 1 精彩帖子
admin_kefu + 50 根据规定进行奖励

总评分: 论坛币 + 55  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

凡尘梦1990 学生认证  发表于 2014-10-24 15:19:48 |显示全部楼层 |坛友微信交流群
按楼上说的,还是无法运行。我想是不是因为 sas宏变量只能对sas中已存储的变量定义和调用呢?

使用道具

sniperhgy 发表于 2014-10-24 15:31:54 |显示全部楼层 |坛友微信交流群
凡尘梦1990 发表于 2014-10-24 15:19
按楼上说的,还是无法运行。我想是不是因为 sas宏变量只能对sas中已存储的变量定义和调用呢?
楼主你好,说无法执行的话,请将自己写的整个代码以及错误提示贴出来(最好就是将整个log的内容贴出),大家可以一块想办法,不要只说一句话,这样别人没法帮你的。

使用道具

凡尘梦1990 学生认证  发表于 2014-10-24 15:48:11 |显示全部楼层 |坛友微信交流群
代码已经写在第一个帖子了。。我把log运行记录也贴出来

89   %macro import(file);
90   proc import datafile="d:\sas\141024\&file.xlsx"
91               out=&file
92               dbms=excel2007 replace;
93               getnames=yes;
94   run;
95   %mend import(file);
WARNING: 已忽略宏定义“IMPORT”的 %MEND 语句中的无关文本。
96   %import (balsheet);

ERROR: 无法打开文件“d:\sas\141024\balsheetxlsx.XLS”。该文件不存在或已被另一用户打开。或者您需要相应权限才能查看其数据。
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE IMPORT”所用时间(总处理时间):
      实际时间          0.06 秒
      CPU 时间          0.01 秒

97   run;

使用道具

凡尘梦1990 学生认证  发表于 2014-10-24 16:38:44 |显示全部楼层 |坛友微信交流群
sniperhgy 发表于 2014-10-24 08:07
楼主你好,关于楼主写的宏,我有几点建议:
1. 楼主注意到log里面的那个warning了吗? 这个是由于%mend  ...
多谢!至于你说的那个点点, 试过2次,因为第一次还是有问题,所以我贴程序出来的时候,就贴了一个点的。不过这次跑出来是对的,谢谢你的第一个建议。。

使用道具

sniperhgy 发表于 2014-10-24 16:54:17 |显示全部楼层 |坛友微信交流群
凡尘梦1990 发表于 2014-10-24 16:38
多谢!至于你说的那个点点, 试过2次,因为第一次还是有问题,所以我贴程序出来的时候,就贴了一个点的。 ...
成功了就好,恭喜楼主解决了一个问题。

使用道具

凡尘梦1990 学生认证  发表于 2014-10-24 16:56:05 |显示全部楼层 |坛友微信交流群
多谢,sas新手,有问题还要向你多请教。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-17 04:37