通过foreach循环从Excel导入
我打算通过foreach
循环import
和处理各种Excel文件。 import
本身不工作,虽然Stata不会识别“x”作为Excel文件名的替代品。
local excelfiles "bb_01 bit0_2 bun comp_03 comp_c01m LLU-ck" foreach item of local excelfiles { import excel using "D:\...\...\...\Data\Files\`x'.XLS", sheet("DynamicReport") cellrange(A2:AI201) firstrow keep v1 v2 v3 v4 save "D:\...\...\...\...\`x'.dta", replace
我得到的错误是file D:\...\...\...\...\Data\Files.XLS not found
这里有各种各样的问题。
-
你的代码不一致。 您在
foreach
语句中声明了item
,但在循环中引用了x
。 所以,就Stata而言,本地macros从未被定义。 这本身并不是一个错误,但是Stata用一个空stringreplace了不存在的(空的)本地macros的引用,结果是你的报告。 -
如果您参考项目来replace对
x
的引用,那么您的代码仍然不起作用。 请参阅(例如) http://www.stata.com/manuals14/u.pdf 18.3.11和http://www.stata-journal.com/sjpdf.html?articlenum=pr0042,以便立即使用本地反斜杠的警告macros参考。 问题是反斜杠既是完整的Windows文件path中的转义字符又是分隔符。 应该通过在文件path中使用正斜杠来解决冲突,即使在Windows中也是如此。 -
在你显示的代码段中循环从不closures。
否则,我无法检查您的代码,因为您的代码不可重现。 我假设三重点不是直接的,而是取代不应该是至关重要的细节。