使用自定义函数时出现“名称未解析”错误你好,
我正在尝试在 JMP 脚本中定义和使用自定义函数。 这样可以运行吗? 到目前为止,当它到达调用函数(JSload)的行时,我在日志中收到以下错误。
Name Unresolved: JSload 在访问或评估 'JSload' , JSload( temp ) /*###*/
我正在向函数传递一个字符串“temp”(具有 xlsx 文件正确路径的文件名)并尝试使用 Open 命令将该文件的内容导入数据表。 我认为尽管它在对函数的初始调用中被捕获。 这是到目前为止的脚本和函数功能。 变量“temp”似乎是正确的(在日志文件中检查)。
Open 命令的代码来自手动完成初始数据导入后的“保存脚本”。
谢谢,
乔
=================================================
对于(索引1 = 1,索引1 <= 1,索引1++,
temp = (filepath||filelist[index1]);
JS加载(临时);
);
JSload = 函数({temp},
打开(
温度,
工作表(“Sheet1”),
用于所有工作表(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:\用户\公共\临时\” ;
文件列表 = { “我的测试.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 = (filepath||filelist[index1]);
JS加载(临时);
);
高温下,
埃里克
回复:使用自定义函数命名未解决的错误嗨乔,
问题是您正在为文件路径和函数定义中的参数使用“temp”变量名。 如果您将函数语句中的两个“temp”实例替换为不同的未使用的变量名,则您的脚本应该可以工作。
-杰瑞