使用自定义函数时出现“名称未解析”错误你好,
我正在尝试在 JMP 脚本中定义和使用自定义函数。 这样运行会好吗? 截至目前,当它到达调用函数(JSload)的行时,我在日志中收到以下错误。
名称未解析: JSload 正在访问或评估 'JSload' , JSload( temp ) /*###*/
我向函数传递一个字符串“temp”(具有 xlsx 文件正确路径的文件名),并尝试使用“打开”命令将该文件的内容导入到数据表中。 我认为它在对该函数的初始调用中被捕获。 这是目前的脚本和函数。 变量“temp”似乎已正确设置(在日志文件中检查)。
打开命令的代码来自手动完成初始数据导入后的“保存脚本”。
谢谢,
乔
=================================================
对于(索引1=1,索引1<=1,索引1++,
temp = (文件路径||文件列表[索引1]);
JSload(临时);
);
JSload = 函数({temp},
打开(
温度,
工作表(“工作表1”),
用于所有床单( 1 ),
连接工作表( 0 ),
创建串联列( 0 ),
工作表设置(
1、
有列标题( 1 ),
标题中的行数( 1 ),
标题从行 ( 1 ) 开始,
数据从行( 2 ) 开始,
数据从列 (1) 开始,
数据在行( 0 ) 结束,
数据在列 (0) 上结束,
复制跨行( 1 ),
抑制隐藏行( 1 ),
抑制隐藏列( 1 ),
抑制空列( 1 ),
视为层次结构( 0 )
);
);
回复:自定义函数的名称未解决的错误<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />谢谢埃里克。 这就是窍门!
乔
回复:自定义函数的名称未解决的错误嘿,乔,
实际上,我认为重用变量“temp”不是问题,因为JMP说“JSload”是它找不到的。我认为问题是你的函数是在你调用它之后定义的。在 JMP 中,需要在调用函数之前对其进行定义。将“JSload = function({temp},...)”部分移至 for 循环之前,我怀疑它会起作用。
另外,函数定义末尾似乎缺少右括号和分号。
这个版本对我有用:
文件路径= “c:\用户\公共\临时\” ;
文件列表 = { “myTest.xlsx” };
JS负载=功能({温度},
打开(
温度,
工作表( “表1” ),
适用于所有纸张( 1 ),
连接工作表( 0 ),
创建串联列( 0 ),
工作表设置(
1 ,
有列标题( 1 ),
标题中的行数( 1 ),
标题从行开始( 1 ),
数据从行开始( 2 ),
数据从列开始( 1 ),
数据结束于行( 0 ),
数据结束于列( 0 ),
复制跨行( 1 ),
抑制隐藏行( 1 ),
抑制隐藏列( 1 ),
抑制空列( 1 ),
视为层次结构( 0 )
);
);
);
为了(索引 1 = 1 ,索引1 <= 1 , 索引1++,
temp = (文件路径||文件列表[索引1]);
JSload(临时);
);
哈特哈,
埃里克
回复:自定义函数的名称未解决的错误嗨乔,
问题是您在文件路径和函数定义中的参数中使用了“temp”变量名称。 如果您将函数语句中的两个“temp”实例替换为不同的、未使用的变量名称,您的脚本应该可以工作。
-杰瑞