HOWTO · VBA

Access VBA로 CSV 가져오기

이 문서에서는 CSV를 Access VBA로 가져오는 방법에 대해 설명합니다.

이 페이지의 내용

VBA는 개발자에게 다양한 기능과 기능을 제공합니다. 이 문서에서는 CSV를 Access VBA로 가져오는 방법을 안내합니다.

Access 데이터베이스에 CSV 파일을 연결하는 방법

다른 옵션을 사용할 수 있는데 VBA 코드를 사용하여 데이터를 가져오는 이유는 무엇입니까? VBA 코드를 통해 데이터를 가져오면 시각적 인터페이스를 사용하여 데이터를 가져올 때 사용할 수 없는 다양한 형식을 탐색하고 작업할 수 있습니다.

또한 보다 실용적인 수준에서 동일한 가져오기를 두 번 수행해야 하는 경우 VBA 코드를 사용하여 데이터를 가져오는 것이 작업을 수행하는 효율적이고 액세스하기 쉬우며 빠른 방법입니다.

매번 사용할 수 있는 기능을 생성하여 매번 가져오기 마법사를 거치는 것보다 빠르고 쉽게 처리할 수 있습니다.

CSV는 쉼표로 구분된 값을 나타냅니다. 즉, 기본 가져오기 기능은 파일에서 쉼표를 찾습니다.

그러나 쉼표 이외의 것을 사용하는 경우 다음 단계를 시도하여 작동하도록 할 수 있습니다.

  • 먼저 파일을 수동으로 가져옵니다.
  • 설정을 지정했으면 마침을 선택하기 직전에 고급을 선택하여 몇 가지 사항을 변경합니다.
  • 다른 이름으로 저장을 선택하고 Access에서 제안한 이름을 선택하거나 직접 이름을 지정하십시오.
  • 선택한 이름을 기록해 두십시오. 예: "데이터 가져오기 지정".
  • 확인을 두 번 선택한 다음 가져오기를 취소합니다.
  • 이제 아래 코드로 생성한 가져오기 사양을 사용합니다.
DoCmd.TransferText acImportDelim, "Specification of Data Import", "T1", "D:\Data.csv", False

CSV를 Access VBA로 가져오는 가장 쉬운 방법 중 하나는 CSV 파일을 Access 데이터베이스에 테이블로 연결하는 것입니다. 그런 다음 다른 일반 Access 테이블과 마찬가지로 이러한 테이블에서 작업할 수 있습니다.

예를 들어 원하는 것을 반환하는 테이블을 기반으로 적절한 쿼리를 만들 수 있습니다.

테이블은 수동으로 연결하거나 다음과 같은 방식으로 VBA로 연결할 수 있습니다.

DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tableToImport", _
    FileName:="C:\MyData.csv", HasFieldNames:=true

그런 다음 다음 코드를 실행하여 CSV 테이블을 다시 연결하고 가져오기를 수행합니다.

Dim DB As DAO.Database
' Re-linking the CSV Table
Set DB = CurrentDb
On Error Resume Next:   DB.TableDefs.Delete "tableToImport":   On Error GoTo 0
DB.TableDefs.Refresh
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tableToImport", _
    fileName:="C:\MyData.CSV", HasFieldNames:=True
DB.TableDefs.Refresh
' Now perform the import
DB.Execute "INSERT INTO anyTable SELECT c1, c2, ... FROM tableToImport " _
   & "WHERE NOT F1 IN ('A1', 'A2', 'A3')"
DB.Close:   Set DB = Nothing

처음부터 일부 행을 가져오고 끝에서 일부 행을 Access로 가져와야 하는 경우에도 수행할 수 있습니다. CSV 파일을 Access에 연결하면 다음을 사용하여 필요한 행을 가져올 수 있습니다.

INSERT INTO anyTable SELECT c1, c2, ... FROM tableToImport WHERE NOT F1 IN ('A1', 'A2', 'A3')

명령문에서 F1 열의 'A1', 'A2' 및 'A3' 값이 있는 행은 건너뛰고 최종 결과 집합에서 제외됩니다. 그러나 CSV 파일에 필드 이름이 있는 경우 HasFieldNames:=true로 가져오면 이 이름이 열 이름으로 사용된다는 점에 유의해야 합니다.

그렇지 않으면 Access에서 'F1', 'F2', 'F3' 등의 열 이름을 자체적으로 할당합니다. 파일이 더 작은 경우 줄을 쉽게 읽고 빠르게 쓸 수 있습니다.

세미콜론으로 구분된 CSV 파일

CSV 파일이 세미콜론으로 구분된 경우 가져오기 사양이 필요합니다. 이 특정 사양을 생성하려면 수동으로 데이터 가져오기를 한 번 시도해야 합니다.

이를 통해 사양을 저장하고 나중에 VBA 코드와 함께 사용할 수 있습니다. 이는 다음과 같은 방법으로 수행할 수 있습니다.

  • 외부 데이터 > 새 데이터 소스 > 파일에서 > 텍스트 파일을 선택합니다.
  • 옵션을 탐색하고 테이블로 가져올 CSV 파일을 선택합니다.
  • 그러면 텍스트 가져오기 마법사 대화 상자가 열립니다.
  • 그에 따라 가져오기 속성을 설정합니다. 그러나 아직 마법사를 닫지 마십시오.
  • 왼쪽 하단의 고급 버튼을 클릭합니다. 사양 대화 상자가 열립니다.
  • 다른 이름으로 저장을 클릭하고 "SemiColonImportSpecification"과 같이 적절하게 이름을 지정하고 최종 파일을 저장합니다.
  • 이제 여기서 해야 할 일은 사양 파일을 저장하는 것이므로 가져오기를 취소할 수 있습니다.
  • 초기 VBA 코드로 돌아가서 다음과 같은 방법으로 specifications라는 매개변수를 하나 더 포함합니다.
    DoCmd.TransferText _
    TransferType:=acImportDelim, _
    SpecificationName:="SemiColonImportSpec", _
    TableName:="TEST", _
    FileName:="C:\TEST.CSV", _
    HasFieldNames:=True
    

텍스트 파일을 MS Access로 수동으로 내보내기

텍스트 파일을 MS Access로 수동으로 가져올 수도 있습니다. 이렇게 하면 텍스트 구분 기호와 셀 구분 기호를 선택할 수 있습니다.

이것이 작동하려면 메뉴에서 외부 데이터를 선택하고 사용할 파일을 선택한 다음 마법사를 단계별로 진행해야 합니다.

마법사를 통해 가져오기 작업을 수행하면 특정 가져오기 사양을 쉽게 저장하고 다음 DoCmd.TransferText에 사용할 수 있습니다. 이렇게 하면 작은따옴표 텍스트 및 세미콜론과 같은 비표준 구분 기호를 사용할 수 있습니다.

결론

CSV를 Access VBA로 가져오는 것은 복잡할 수 있습니다. 그러나 올바른 기술을 알고 있다면 프로세스가 훨씬 더 간단해집니다. 이 문서에서는 이 작업을 올바르게 수행하는 방법에 대한 정확한 방법과 세부 정보를 설명합니다.