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 [将文件名拉入工作表]。