循环导入多个Excel文件并将文件中的每个工作簿转换为.dta

我有一个文件,其中包含超过60 Excel的工作簿,我想将它们中的每一个转换为。stat文件中的.dta文件。 我searchnetworking,但找不到一个体面的方式做一个循环。 我写了一个需要专家帮助的代码。 在一个目录中,并且想要创build一个循环来将它们保存为.dta文件。 代码如下

forvalues i=1/60{ import excel "D:\Okay\""`i'.xlsx", sheet("Sheet1") firstrow clear save "D:\Okay\""`i'.dta" } 

我们无法尝试您的代码,因为它是特定于您的计算机的。 在发布问题前请学习https://stackoverflow.com/help/mcve

但很明显

 \Okay\""`i'.xlsx" 

是不太可能的帮助。 正如许多次所记载的那样 – 例如http://www.stata.com/manuals14/u18.pdf中的 [U] 18.3.10和http://www.stata-journal.com/sjpdf.html?articlenum=pr0042 – 你想在Windows下使用的反斜杠(最好不要认为每个人都能识别你的操作系统),在Stata中也有一个作为转义字符的作用。

那个命令会更好

 \Okay/`i'.xlsx" 

以及类似的注释适用于提及文件的其他命令行:将本地macros引用之前的反斜杠更改为正斜杠,并删除不必要的双引号。

其实这一切都是完全可以避免的。 考虑

 cd "D:\Rami Chehab\University Degrees & Courses\PhD in Labour Economics\Data\Data 2016\UNCTAD\Okay" forvalues i=1/60 { import excel `i'.xlsx, sheet("Sheet1") firstrow save `i'.dta } 

一旦你在一个目录或文件夹中工作,你可以保持文件名称的最低限度。

我在那边做了很多错误, 不过,我相信我明白了。 这是你必须编写的工作

  forvalues date=1/57{ import excel "D:/Rami Chehab/University Degrees & Courses/PhD in Labour Economics/Data/Data 2016/UNCTAD/Okay/`date'.xlsx", sheet("Sheet1") firstrow clear save "D:/Rami Chehab/University Degrees & Courses/PhD in Labour Economics/Data/Data 2016/UNCTAD/Okay/`date'.dta" }