将文件名拉入工作表(Microsoft Excel)
Carol的目录中包含约1,000个文件,其名称为YR1905-LIC12345-Smith,Harry-Brown,Mary。她想将所有这些文件名(而不是文件本身)带入工作表,并在破折号处分开名称。因此,示例文件名实际上将在一行中占用四个单元格。 Carol认为这将需要一个宏来完成,但是她不确定如何访问该宏中的文件名。
当然,您可以使用宏来执行此操作,但是您不需要使用宏。相反,您可以使用旧的DOS时代的技巧来获取所需的内容。
如果使用的是更高版本的Excel,则要访问命令提示符,只需在任务栏中Windows图标旁边的搜索框中键入“命令提示符”(不带引号)。如果您使用的是旧版Excel,则可以通过Windows访问命令提示符:“开始” |“开始”。所有程序配件|命令提示符。在命令提示符下,浏览直到您位于包含文件的目录中。在此示例中,假设您尝试获取此目录中的文件列表:
c:\Users\e07482\My Documents\rnp
要导航到该目录,请在命令提示符下输入以下命令:
chdir "\Users\e07482\My Documents\rnp"
由于路径名中的空格,您需要在目录周围使用引号。然后,键入以下命令以在屏幕上查看文件列表是什么:
dir /b /a-d
“ / a-d”部分的意思是“不列出目录”。如果您对屏幕上看到的内容感到满意,则可以使用以下命令将其发送到文件中:
dir /b /a-d > filelist.txt
这将创建一个文本文件(filelist.txt),其中包含当前目录中所有文件的列表。现在,在Excel中,您可以按照以下步骤操作:
。显示“打开”对话框。 (在Excel 2007中,单击“ Office”按钮,然后单击“打开”。在Excel 2010中,单击功能区的“文件”选项卡,然后单击“打开”。在Excel 2013中,单击功能区的“文件”选项卡,单击“打开”,然后单击“计算机”,最后浏览。在更高版本的Excel中,单击功能区的“文件”选项卡,然后单击“浏览”。 。使用对话框底部的文件类型下拉列表,指示要打开文本文件(.prn; .txt; * .csv)。
。导航到并在命令提示符下选择您创建的filelist.txt文件。
。单击打开。 Excel将启动“文本导入向导”,显示“第1步(共3步)”对话框。 (请参见图1。)
。确保选择了定界选项,然后单击下一步。 Excel将显示“第2步,共3步”对话框。
。确保指定破折号作为分隔符。 (您需要单击其他,然后输入破折号作为分隔符。)
。单击完成。您的文件将按照您的需要导入并在短划线处打断。
上述步骤非常容易完成,特别是如果您只需要偶尔将文件列表输入Excel的情况下。如果您需要更常规地执行此操作,则可能应该寻找一种使用宏执行此操作的方法。以下宏将非常快速地工作:
Sub GetFileNames() Dim sPath As String Dim sFile As String Dim iRow As Integer Dim iCol As Integer Dim splitFile As Variant 'specify directory to use - must end in "\" sPath = "C:\" iRow = 0 sFile = Dir(sPath) Do While sFile <> "" iRow = iRow + 1 splitFile = Split(sFile, "-") For iCol = 0 To UBound(splitFile) Sheet1.Cells(iRow, iCol + 1) = splitFile(iCol) Next iCol sFile = Dir ' Get next filename Loop End Sub
运行宏时,请确保当前工作表中没有任何内容。 (那里的所有内容都会被覆盖。)此外,您还应该更改在宏开头附近分配给sPath变量的目录路径。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(11144)适用于Office 365中的Microsoft Excel 2007、2010、2013、2016、2019和Excel。您可以在此处找到适用于Excel的较旧菜单界面的本技巧的版本:
链接:/ excel-Pulling_Filenames_into_a_Worksheet [将文件名拉入工作表]。