通过 foreach 循环从 Excel 导入

Import from Excel via foreach loop

我打算 import 并通过 foreach 循环处理各种 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 而言,本地宏 x 从未定义过。这本身并不是错误,但 Stata 将对不存在(为空)的本地宏的引用替换为空字符串,结果是您报告的。

  2. 如果您将对 x 的引用替换为对 item 的引用,您的代码仍然无法运行。请参阅(例如)http://www.stata.com/manuals14/u.pdf 18.3.11 and http://www.stata-journal.com/sjpdf.html?articlenum=pr0042,了解有关在本地宏引用后立即跟上反斜杠的警告。问题是反斜杠既是转义字符又是完整 Windows 文件路径中的分隔符。应该通过在文件路径中使用正斜杠来解决冲突,即使在 Windows 中也是如此。

  3. 在您显示的代码段中,循环永远不会关闭。

否则我无法检查您的代码,因为您的代码不可重现。我假设三点 ... 不是字面意思,而是替换了不重要的细节。