2014-06-18 1 views
0

(액세스 VBA의) VBA 배열로 .txt 파일을로드하고 조작 한 다음 조작 된 배열을 액세스 테이블에 붙여 넣으려고합니다. 이 매크로를 반복하여 약 500 개의 .txt 파일을 반복하고 수년간의 데이터로 데이터베이스를 채 웁니다.Access VBA의 텍스트 파일에 텍스트 파일

나는이 방법으로 Excel을 사용하기 전에이 작업을 수행했다 : 시트를 1 .txt 파일로 채우고, 데이터를 조작하고, 데이터베이스로로드하고, 시트를 지우고, 다음 txt 파일을로드하고 모든 파일이 끝날 때까지 반복한다. 처리됨. 그러나 이것은 수년이 걸리고 모든 것이 Access에 저장되어 있기 때문에 Excel이 실제로 필요하지 않다는 것이 분명 해집니다.

그 이후로, 나는 엑셀을 사용하지 않고 바로 액세스 할 수있는 방법을 찾아 내려고 노력했지만, 힘들었습니다.

Load csv file into a VBA array rather than Excel Sheet

을하고 나를 위해 작동 할 수 있도록 그것을 수정하려고 : 여기이 보드에 대한 몇 가지 좋은 코드를 발견했다. 특히 The_Barman의 대답은 간단하고 흥미 롭습니다.

나는 배열, VBA, SQL, 기본적으로 모든 것에 익숙하지 않기 때문에 여기서 해결하기 쉬운 몇 가지 큰 실수가있을 수 있습니다. 오류 메시지가 파일을 찾을 수 없다는 팝업 때문에,

Sub LoadCSVtoArray() 

Dim strfile As String 
Dim strcon As String 
Dim cn As ADODB.Connection 
Dim rs As Recordset 
Dim rsARR() As Variant 


    Set cn = New ADODB.Connection 
    strcon = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & "\\filename.txt" & 
    ";Extended Properties=""text;HDR=Yes;FMT=Delimited"";" 

    cn.Open strcon 
    strSQL = "SELECT * filename.txt;" 

    Set rs = cn.Execute(strSQL) 
    rsARR = WorksheetFunction.Transpose(rs.GetRows) 
    rs.Close 

Set cn = Nothing 

[a1].Resize(UBound(rsARR), UBound(Application.Transpose(rsARR))) = rsARR 


End Sub 

코드의 하단 부분이 작동하는지 알지도 해달라고 아래 내 코드를 참조하십시오. 흥미로운 점은 strcon의 값을 디버깅하여 "run"창에 복사하면 올바른 파일이 열리는 것입니다. 그래서 경로가 맞습니까? ADODB 연결을 통해 .txt 파일을 열 수도 있습니까? 지금이게 가능하고 최선의 해결책이라면 나는 조금 혼란 스럽다.

내가 배열에 저장하려고하고있는 텍스트 파일에 대한 좀 더 배경 :

- 그들은 다른 프로그램에서 출력, 항상 동일한 구조이며 매우 온다

  • oreganized 있도록 이 형식 : A 열에 열 B .... 데이터 1 개 데이터 1 개 데이터 2 데이터 2 ... 등등

와.

가능하면이 구조를 유지하고 첫 번째 행이 열 머리글 인 테이블로도 안전합니다.

답변