Carol에는 YR1905-LIC12345-Smith, Harry-Brown, Mary와 같은 이름을 가진 약 1,000 개의 파일이있는 디렉토리가 있습니다. 그녀는 이러한 파일 이름 (파일 자체가 아님)을 모두 워크 시트로 가져와 대시에서 이름을 구분하려고합니다. 따라서 예제 파일 이름은 실제로 단일 행에서 4 개의 셀을 차지합니다. Carol은이 작업을 수행하기 위해 매크로가 필요하다고 생각하지만 해당 매크로의 파일 이름에 액세스하는 방법을 모릅니다.

물론이를 위해 매크로를 사용할 수 있지만 매크로를 사용할 필요는 없습니다. 대신 필요한 것을 얻기 위해 오래된 DOS 시대의 트릭을 사용할 수 있습니다.

명령 프롬프트 (Windows : 시작 | 모든 프로그램 | 보조 프로그램 | 명령 프롬프트를 통해 액세스 할 수 있음)에서 파일이 포함 된 디렉터리에 도달 할 때까지 이동합니다. 그런 다음 다음을 입력하십시오.

dir /b /a-d > filelist.txt

그러면 현재 디렉터리 내의 모든 파일 목록이 포함 된 텍스트 파일 (filelist.txt)이 생성됩니다. 이제 Excel 내에서 다음 단계를 수행 할 수 있습니다.

  1. Excel 내에서 도구 모음의 열기 도구를 클릭합니다. Excel은 열기 대화 상자를 표시합니다.

  2. 대화 상자 맨 아래에있는 파일 유형 드롭 다운 목록을 사용하여 텍스트 파일 (.prn; .txt; * .csv)을 열 것임을 나타냅니다.

  3. 명령 프롬프트에서 만든 filelist.txt 파일을 찾아 선택합니다.

  4. 열기를 클릭하십시오. Excel은 텍스트 가져 오기 마법사를 시작하고 1/3 단계 대화 상자를 표시합니다. (그림 1 참조)

  5. Delimited 선택이 선택되어 있는지 확인하고 Next를 클릭합니다. Excel은 3 단계 중 2 단계 대화 상자를 표시합니다.

  6. 구분 기호로 대시를 지정했는지 확인하십시오. (기타를 클릭 한 다음 구분 기호로 대시를 입력해야합니다.)

  7. 마침을 클릭하십시오. 파일을 가져 와서 원하는대로 대시에서 분리합니다.

위의 단계는 수행하기가 매우 쉽습니다. 특히 파일 목록을 가끔씩 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 변수에 할당 된 디렉터리 경로를 변경해야합니다.

매크로를 실행할 때 오류가 발생하면 Excel 97을 사용하고있을 가능성이 높습니다. 분할 기능 (파일 이름을 대시로 구분하는 데 사용됨)은 Excel 2000까지 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 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (11143)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.

Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전은 여기에서 찾을 수 있습니다.

link : / excelribbon-Pulling_Filenames_into_a_Worksheet [파일 이름을 워크 시트로 가져 오기].