Carol的目录中包含约1,000个文件,其名称为YR1905-LIC12345-Smith,Harry-Brown,Mary。她想将所有这些文件名(而不是文件本身)带入工作表,并在破折号处分开名称。因此,示例文件名实际上将在一行中占用四个单元格。 Carol认为这将需要一个宏来完成,但是她不确定如何访问该宏中的文件名。

当然,您可以使用宏来执行此操作,但是您不需要使用宏。相反,您可以使用旧的DOS时代的技巧来获取所需的内容。

在命令提示符下(可通过Windows访问:“开始” |“所有程序” |“附件” |“命令提示符”),导航直到您位于包含文件的目录中。然后输入以下内容:

dir /b /a-d > filelist.txt

这将创建一个文本文件(filelist.txt),其中包含当前目录中所有文件的列表。现在,在Excel中,您可以按照以下步骤操作:

。在Excel中,单击工具栏上的“打开”工具。 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变量的目录路径。

如果在运行宏时遇到错误,则很有可能您正在使用Excel97。直到Excel 2000才将Split函数(用于在短划线处分开文件名)未添加到VBA。如果使用Excel 97 ,则可以使用以下例程来模拟Split函数的作用:

Function Split(Raw As String, Delim As String) As Variant     Dim vAry() As String     Dim sTemp As String     Dim J As Integer     Dim Indx As Integer

Indx = 0     sTemp = Raw     J = InStr(sTemp, Delim)

While J > 0         Indx = Indx + 1         ReDim Preserve vAry(1 To Indx)

vAry(Indx) = Trim(Left(sTemp, J))

sTemp = Trim(Mid(sTemp, J, Len(sTemp)))

J = InStr(sTemp, Delim)

Wend     Indx = Indx + 1     ReDim Preserve vAry(1 To Indx)

vAry(Indx) = Trim(sTemp)

Split = vAry()

End Function

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11143)适用于Microsoft Excel 97、2000、2002和2003。您可以在以下位置找到用于Excel功能区界面(Excel 2007及更高版本)的本技巧的版本:

链接:/ excelribbon-Pulling_Filenames_into_a_Worksheet [将文件名拉入工作表]。