부분 파일 이름을 기반으로 가져 오기 (Microsoft Excel)
Ira는 매크로를 사용하여 Excel로 가져 오는 주간 텍스트 구분 파일을받습니다. 파일 이름은 매주 동일하므로 Ira는 파일 이름을 매크로에 포함 할 수있었습니다. 이로 인해 가져 오기가 매우 쉬워졌습니다. 최근 공급 업체의 새 시스템은 매주 파일 이름을 변경하기 시작했지만 처음 12자는 항상 동일하게 유지됩니다. Ira는 매주 파일 이름을 수정할 필요없이이 텍스트 파일을 가져 오도록 매크로를 코딩하는 방법을 궁금해합니다.
이 문제에 접근 할 수있는 몇 가지 방법이 있으며, 모두 매크로의 광범위한 레코딩을 의미 할 수 있습니다. 선택하는 방법은 매주 작업을 수행하려는 방법에 따라 달라집니다. 예를 들어, 들어오는 파일이 저장된 디렉토리, 파일 이름의 기본 12 자, 파일 이름 확장자를 알고 있다고 가정 해 보겠습니다. 이 정보를 사용하여 다음과 같은 방식으로 사용자에게 파일 이름의 접미사를 제공하라는 메시지를 표시 할 수 있습니다.
Sub OpenImportFile() Dim sFileName As String Dim sBase As String Dim sSuffix As String Dim sExt As String sBase = "c:\MyDirectory\First12Chars" sExt = ".csv" sSuffix = InputBox("Enter suffix for filename") sFileName = sBase & sSuffix & sExt Workbooks.Open Filename:=sFileName End Sub
분명히 원하는대로 기본 및 확장을 변경할 수 있습니다. 이 예에서는 Excel에서 정상적으로 열리는 CSV 파일을 가져오고 있다고 가정합니다.
단순히 파일 그룹을 폴더에 배치하고 모든 파일을 열려면 사용자 입력을받을 필요가 없기 때문에 코드 실행이 조금 더 빨라집니다.
Sub OpenImportFiles() Dim sFileName As String Dim sBase As String Dim sExt As String sBase = "c:\MyDirectory\First12Chars" sExt = ".csv" sFileName = Dir(sBase & "*" & sExt) If sFileName = "" Then MsgBox "No Files Found" Else Do While sFileName > "" Workbooks.Open Filename:=sFileName sFileName = Dir Loop End If End Sub
이 방법은 폴더에있는 모든 CSV 파일을 엽니 다. 다른 유형의 파일을 열려면 sExt 변수에 저장된 내용을 변경하면됩니다. 기억해야 할 한 가지는 폴더의 모든 CSV 파일이 열리기 때문에 이전 주에서 가져온 파일을 열 수 있다는 것입니다. (이것은 당신이 원하는 것일 수도 있고 아닐 수도 있습니다.)
지금까지이 팁에서 제시 한 모든 내용은 파일을 “가져올”때 파일을 열어 작업 할 수 있다고 가정합니다. 그렇지 않을 수도 있습니다. 매크로가 어떤 방식 으로든 가져 오기 파일을 처리하고 작업을 수행하도록 할 수 있습니다. 해당 기능은 이미 이전 매크로에있을 수 있으므로 가져 오기 파일을 식별하는 방법을 변경하기 만하면됩니다. 이 경우 사용하는 코드는이 팁에 이미 제시된 코드에서 수정할 수 있습니다.
텍스트 파일에서 데이터를 가져 와서 통합 문서에 넣는 또 다른 방법은이 예제 코드에 표시된 것처럼 OpenText 메서드를 사용하는 것입니다. :
Sub OpenImportFile() Dim sFileName As String Dim sBase As String Dim sExt As String sBase = "c:\MyDirectory\First12Chars" sExt = ".csv" sFileName = sBase & "*" & ".txt" Workbooks.OpenText Filename:=sFileName, Origin:= _ xlMSDOS, StartRow:=1, DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:= False, Space:=False, _ Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True End Sub
OpenText 메서드가 수행하는 작업에 대한 전체 탐색은이 팁의 범위를 벗어나지 만 결과적으로 기본 12 자로 시작하는 구분 된 모든 텍스트 파일을 통합 문서에서 열어야합니다.
매개 변수를 변경하여 메소드 작동 방식을 수정할 수 있습니다. 사용할 구분 문자를 지정하는 데 사용되는 매개 변수에 특히주의해야합니다.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (13472)은 Microsoft Excel 2007, 2010, 2013 및 2016에 적용됩니다.