2017-09-08 3 views
0

저는이 포럼을 처음 사용하고 있으며, 누군가가 나를 도와 줄 수 있기를 바라고 있습니다. 나는 참고 용으로 사용하고있는 코드를 첨부 할 것이고, 그런 식으로 항상 나를 위해 일했다.Excel VBA를 사용하여 레코드를 Access 테이블에 전송하십시오.

엑셀에서 엑세스 테이블로 데이터를 전송하는 데 Excel vba를 사용하고 있습니다. 어떤 이유로 든 코드가 "rs"까지 완벽하게 실행되는 것 같습니다. 그러면 값 추가를 건너 뛰고 rs.Close로 바로갑니다. 나는 나에게 이상한 어떤 오류 메시지도받지 못한다. 코드 샘플이 포함되어 있습니다.

누군가에게 몇 가지 제안 사항이 있으면 크게 감사하겠습니다.

Dim db As Database, rs As Recordset, r As Long 

'ESTABLISH DATABASE AND TABLE LOCATION - PRODUCTION 
'Prod environment location 
'Set db = OpenDatabase("C:\!PITF Docs\Forecasting and Planning\Collection\PITF_Collection.accdb") 
' open the database 
Set db = OpenDatabase("C:\!PITF Docs\Forecasting and Planning\Collection\PITF_Collection.accdb") 
Set rs = db.OpenRecordset("Upload_InternalLabor", dbOpenTable) 

' get all records in a table 
r = 2 ' the start row in the worksheet 
Do While Abs(Range("HZ" & r)) > 0 
' repeat until first empty cell in column A 
    With rs 
     .AddNew ' create a new record 
     ' add values to each field in the record 
     .Fields("Class") = Range("DO" & r).Value 
     .Fields("New_Hire") = Range("DP" & r).Value 
     .Fields("Name") = Range("DQ" & r).Value 
     .Fields("Role") = Range("DR" & r).Value 
     .Fields("Expense_Driver") = Range("DS" & r).Value 
     .Fields("Comments") = Range("DT" & r).Value 
     .Fields("Salary") = Range("DU" & r).Value 
     .Fields("Hire_Date") = Range("DV" & r).Value 
     .Fields("42741") = Range("DW" & r).Value 
     .Fields("42755") = Range("DX" & r).Value 
     .Fields("42769") = Range("DY" & r).Value 
     .Fields("42783") = Range("DZ" & r).Value 

     .Fields("Submitter") = Range("HW" & r).Value 
     .Fields("Timestamp") = Range("HX" & r).Value 
     .Fields("Total") = Range("HY" & r).Value 
     .Fields("Abs") = Range("HZ" & r).Value 


     ' add more fields if necessary... 
     .Update ' stores the new record 
    End With 
    r = r + 1 ' next row 
Loop 
rs.Close 
Set rs = Nothing 
db.Close 
Set db = Nothing 
+0

루프가 반복되지 않는 것 같습니다. 'With rs'에 중단 점을 던질 수 있습니까? (줄을 클릭하고 F9를 누르십시오) 프로 시저를 실행하고 그 줄에서 중단되는지보십시오. 그렇지 않다면 루프 상태가 실패합니다. Abs (범위 ("HZ2"))> 0' – JNevill

+0

DAO를 사용하고 있습니까? 그렇다면 나는'Dim db as DAO.Database'를'rs'와 동일하게 지정할 것입니다. 또한,'dbOpenTable' 대신'dbOpenDynaset'을 시도하십시오 –

+0

흠 ... 깨지지 않는 것 같습니다 ... 그냥 rs = Nothing으로 설정합니다. (나는 F8을 사용하여 그것을 밟았다.) 고칠 방법에 대한 제안? 이전에 언급했듯이이 코드를 여러 다른 워크 시트에 사용 했으므로 문제가 발생하지 않았습니다. 고맙습니다. –

답변

0

테이블이 동일한 열 순서로 설정되어있는 한 말 그대로 1 회만 복사하거나 붙여 넣을 수 있습니다.

한 번만 아니지만 여전히 Access 데이터베이스 인 경우 External Data 섹션을 통해 Excel 파일을 연결 한 다음 두 테이블에있는 키를 기반으로 UPDATE 또는 APPEND 쿼리를 수행 할 수 있습니다.

  1. 당신이 다른 모든 테이블처럼 처리 할 수 ​​있습니다 링크 된 Excel 파일이 있으면
  2. 가 클릭 OK

Link to the data source by creating a linked table 라디오 버튼

  • 를 선택 마법사의 File name을 선택합니다.

  • +0

    불행히도이 파일은 작동하는 문서가 될 것이므로 한 번에 할 일이 아닙니다. 그래도 감사합니다. –

    +0

    업데이트를 확인하십시오. –

    관련 문제