通过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

这里有各种各样的问题。

  1. 你的代码不一致。 您在foreach语句中声明了item ,但在循环中引用了x 。 所以,就Stata而言,本地macros从未被定义。 这本身并不是一个错误,但是Stata用一个空stringreplace了不存在的(空的)本地macros的引用,结果是你的报告。

  2. 如果您参考项目来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中也是如此。

  3. 在你显示的代码段中循环从不closures。

否则,我无法检查您的代码,因为您的代码不可重现。 我假设三重点不是直接的,而是取代不应该是至关重要的细节。