使用自定義函數時出現“名稱未解析”錯誤你好,
我正在嘗試在 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”實例替換為不同的、未使用的變量名稱,您的腳本應該可以工作。
-傑瑞