Access VBA로 CSV 가져오기

Bilal Shahid 2023년6월21일
  1. Access 데이터베이스에 CSV 파일을 연결하는 방법
  2. 세미콜론으로 구분된 CSV 파일
  3. 텍스트 파일을 MS Access로 수동으로 내보내기
  4. 결론
Access VBA로 CSV 가져오기

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

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub