나눔터  
  HOME > 나눔터 > 묻고답하기 > 액세스
액세스
액세스에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 황동준 (bogri2000)

추천:  0
파일:     조회:  19
제목:   [RE]Table을 Excel로 변환하는 vba 코딩 문의
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 액세스 버전(2007-2016):

* 아래줄에 질문을 작성하세요 >> 

A라는 Table 안에 있는 레코드를 B라는 엑셀파일(.xlsx)로 옮기는 과정을 반복해야 합니다. 

A 테이블에는 필요할 때마다 새로은 데이터가 추가되고 있고, 그 중 필요한 레코드를 선택하여, 선택된 레코드를 역시 필요할 때마다, B라는 엑셀파일로 내보내기 하는 과정이 반복되어야 합니다. 단, B라는 엑셀파일은 매번 새로 만들어지는 게 아니라 기존 레코드에 추가하여 붙여넣기 하는 방식으로 진행해야 합니다. 

이런 과정을 vba로 코딩하여 만들고 싶은데 딱 맞는 사례를 못 찾고 있습니다. 어떻게 하면 찾을 수 있을까요?
==============[이형재님 글에 대한 답변입니다]==============


이렇게 말로만 설명해서 질문하시면 정확한 의도도 파악하기 힘들뿐더러, 답변자가 직접 파일을 만들어 봐야 하는 수고가 있기 때문에 답변을 얻기 힘듭니다.


다음은 AI가 만들어준 엑셀 내보내기 vba입니다.
파일이 없으면 새로만들고 있으면 기존파일을 오픈하여 기존내용 이후로 현재 내보내려는 내용을 추가합니다.

    Dim xlApp As Object
    Dim xlWB As Object
    Dim xlSheet As Object
    Dim filePath As String
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim lastRow As Long
    Dim i As Integer
    
    ' 엑셀 파일 경로 설정
    filePath = "파일경로"
    
    ' 엑셀 애플리케이션 객체 생성
    On Error Resume Next
    Set xlApp = CreateObject("Excel.Application")
    
    ' 파일이 존재하는지 확인
    If Dir(filePath) = "" Then
        ' 파일이 없으면 새로 생성
        Set xlWB = xlApp.Workbooks.Add
        xlWB.SaveAs filePath
    Else
        ' 파일이 있으면 열기
        Set xlWB = xlApp.Workbooks.Open(filePath)
    End If
    
    ' 첫 번째 시트 선택
    Set xlSheet = xlWB.Sheets(1)
    
    ' 마지막 행 찾기
    If xlSheet.Cells(1, 1).Value = "" Then
        lastRow = 1
    Else
        lastRow = xlSheet.Cells(xlSheet.Rows.Count, 1).End(-4162).Row + 1
    End If
    
    ' Access 데이터베이스와 Recordset 설정
    Set db = CurrentDb
    Set rs = db.OpenRecordset("쿼리명")
    
    ' 필드 이름 추가 (첫 번째 행)
    If lastRow = 1 Then
        For i = 0 To rs.Fields.Count - 1
            xlSheet.Cells(lastRow, i + 1).Value = rs.Fields(i).Name
        Next i
        lastRow = lastRow + 1
    End If
    
    ' 데이터 추가 (Recordset 내용 반복)
    Do While Not rs.EOF
        For i = 0 To rs.Fields.Count - 1
            xlSheet.Cells(lastRow, i + 1).Value = rs.Fields(i).Value
        Next i
        lastRow = lastRow + 1
        rs.MoveNext
    Loop
    
    ' Recordset 닫기
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    
    ' 파일 저장 및 닫기
    xlWB.Save
    xlWB.Close
    xlApp.Quit
    
    ' 메모리 해제
    Set xlSheet = Nothing
    Set xlWB = Nothing
    Set xlApp = Nothing
    
    MsgBox "데이터 내보내기가 완료되었습니다!"
 
[불량 게시물 신고]  
이형재감사합니다~
실은 감이 잡히지 않아 글로만 서술했습니다. 이제야 감이 잡히네요. 알려 주신 방법으로 시도해 보고 의문사항이 있으면 다시 문의 드리겠습니다.
진심으로 감사드립니다~
03-21 (15:32)
삭제 ■신고
        
  

작성일 : 2025-03-21(12:51)
최종수정일 : 2025-03-21(12:51)
 


 ◎ 관련글

  제 목   작성자   날짜
Table을 Excel로 변환하는 vba 코딩 문의 이형재 2025-03-21
[RE]Table을 Excel로 변환하는 vba 코딩 문의 황동준 2025-03-21