Microsoft Excel에서 VBA를 사용하여 텍스트 파일 (ADO)에서 데이터 가져 오기
아래 절차는 텍스트 파일에서 ADO 레코드 집합을 가져와 워크 시트에 결과를 채우는 데 사용할 수 있습니다.
Sub GetTextFileData(strSQL As String, strFolder As String, rngTargetCell As Range) ' example: GetTextFileData "SELECT * FROM filename.txt", _ "C:\FolderName", Range("A3") ' example: GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria'", _ "C:\FolderName", Range("A3") Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer If rngTargetCell Is Nothing Then Exit Sub Set cn = New ADODB.Connection On Error Resume Next cn.Open "Driver={Microsoft Text Driver (.txt; .csv)};" & _ "Dbq=" & strFolder & ";" & _ "Extensions=asc,csv,tab,txt;" On Error GoTo 0 If cn.State <> adStateOpen Then Exit Sub Set rs = New ADODB.Recordset On Error Resume Next rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText On Error GoTo 0 If rs.State <> adStateOpen Then cn.Close Set cn = Nothing Exit Sub End If ' the field headings For f = 0 To rs.Fields.Count - 1 rngTargetCell.Offset(0, f).Formula = rs.Fields(f).Name Next f rngTargetCell.Offset(1, 0).CopyFromRecordset rs ' works in Excel 2000 or later 'RS2WS rs, rngTargetCell ' works in Excel 97 or earlier rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
절차는 다음과 같이 사용할 수 있습니다.
Sub TestGetTextFileData() Application.ScreenUpdating = False Workbooks.Add GetTextFileData "SELECT * FROM filename.txt", "C:\FolderName", Range("A3") ' GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria'", _ "C:\FolderName", Range("A3") Columns("A:IV").AutoFit ActiveWorkbook.Saved = True End Sub
filename.txt를 데이터를 가져올 텍스트 파일의 이름으로 바꿉니다.
C : \ FolderName을 텍스트 파일이 저장된 폴더의 이름으로 바꿉니다.
텍스트 파일의 첫 번째 행은 열 머리글 / 필드 이름으로 사용됩니다.
datwa가있는 각 열은 제어판의 국가 별 설정에 사용되는 목록 구분 문자로 구분해야합니다. I 노르웨이는 일반적으로 세미콜론 (;)이고 다른 국가에서는 쉼표 (,) 일 수 있습니다.
이 링크를 클릭하면 RS2WS 절차를 찾을 수 있습니다.
매크로 예제에서는 VBA 프로젝트가 ADO 개체 라이브러리에 대한 참조를 추가했다고 가정합니다.
도구, 참조 메뉴를 선택하고 Microsoft ActiveX 데이터 개체 x.x 개체 라이브러리를 선택하여 VBE 내에서이 작업을 수행 할 수 있습니다.