Office Access 2003 또는 Access 2002에서 Excel 통합 문서로 연결된 테이블의 데이터를 변경하거나 추가하거나 삭제할 수 없다

기술 자료 번역 기술 자료 번역
기술 자료: 904953 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

Microsoft Office Access 2003 또는 Microsoft Access 2002에서 Microsoft Excel 통합 문서로 연결된 테이블의 데이터를 변경하거나 추가하거나 삭제할 수 없습니다.

또한 아래 경우 중 하나에 해당하면 이러한 문제가 발생할 수 있습니다.
  • 쿼리를 작성하여 Excel 통합 문서로 연결된 테이블에서 데이터를 검색하는 경우
  • 폼을 작성하여 Excel 통합 문서로 연결된 테이블에서 데이터를 액세스하는 경우
  • DAO 또는 ADO를 사용하여 Excel 통합 문서로 연결된 테이블을 프로그래밍 방식으로 업데이트하는 경우
쿼리를 수행하여 연결된 Excel 통합 문서의 레코드를 업데이트하는 경우 다음과 같은 메시지가 나타납니다.
작업이 업데이트 가능한 쿼리를 사용해야 합니다.
DAO를 사용하여 Excel 통합 문서로 연결된 테이블을 프로그래밍 방식으로 업데이트하는 경우 다음과 같은 메시지가 나타납니다.
런타임 오류 '3027' 업데이트할 수 없습니다. 데이터베이스나 개체가 읽기 전용입니다.
ADO에서 연결된 데이터를 업데이트하려는 경우에도 동일한 메시지가 나타나지만 오류 번호는 다음과 유사할 수 있습니다.
-2147217911 (80040e09)
Excel 통합 문서에 레코드를 삽입하는 쿼리를 실행하면 Excel 통합 문서가 Access 데이터베이스에 연결되어 있지 않은 경우에도 다음과 같은 오류 메시지가 나타납니다.
작업이 업데이트 가능한 쿼리를 사용해야 합니다.

원인

다음과 같은 경우 이 예상된 문제가 발생할 수 있습니다.
  • Microsoft Office 2003 서비스 팩 2(SP2) 또는 Office 2003 SP2 이후에 릴리스된 Access 2003 업데이트를 설치한 경우

    Microsoft Office 2003 서비스 팩 2에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    887616 Office 2003 서비스 팩 2에 대한 설명
  • 2005년 10월 18일자 Access 2002용 업데이트(KB904018)를 설치한 경우

    Access 2002용 업데이트(KB904018)에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    904018 2005년 10월 18일자 Access 2002용 업데이트에 대한 설명
  • Microsoft Office 2003 서비스 팩 2(SP2), Office 2003 SP2 이후에 릴리스된 Access 2003 업데이트 또는 2005년 10월 18일자 이후에 릴리스된 Access 2002 업데이트(KB904018)가 포함된 Access 런타임 응용 프로그램을 설치한 경우
    Access 런타임 응용 프로그램을 사용하여 Office 업데이트 파일을 포함시키는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    916176 Access 2003 또는 Access 2002에서 응용 프로그램에 대한 설치 패키지를 만들 때 마법사에서 Access 릴리스 버전에 포함된 런타임 파일을 사용한다

해결 과정

이 예상된 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.

방법 1: Microsoft Excel 사용

Microsoft Excel에서 연결된 Excel 통합 문서를 연 다음 해당 통합 문서를 변경합니다. 변경을 완료하면 변경 내용을 저장하고 통합 문서를 닫습니다.

방법 2: Access 2003 또는 Access 2002 사용

연결된 Excel 통합 문서를 Access로 가져온 다음 데이터를 변경합니다. 변경을 완료하면 해당 데이터를 Excel .xls 파일로 내보냅니다.

Access에서 Excel로 테이블을 내보내려면 Access에서 다음 코드를 실행하십시오.
Public Sub WorkArounds()
On Error GoTo Leave

    Dim strSQL, SQL As String
    Dim Db As ADODB.Connection
    Set Db = New ADODB.Connection
    Db.CursorLocation = adUseClient
    Db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=<AccessPath>"
    SQL = "<MyQuery>"
    CopyRecordSetToXL SQL, Db
    Db.Close
    MsgBox "Access has successfully exported the data to excel file.", vbInformation, "Export Successful."
    Exit Sub
Leave:
        MsgBox Err.Description, vbCritical, "Error"
        Exit Sub
End Sub

Private Sub CopyRecordSetToXL(SQL As String, con As ADODB.Connection)
    Dim rs As New ADODB.Recordset
    Dim x
    Dim i As Integer, y As Integer
    Dim xlApp As Excel.Application
    Dim xlwbBook As Excel.Workbook, xlwbAddin As Excel.Workbook
    Dim xlwsSheet As Excel.Worksheet
    Dim rnData As Excel.Range
    Dim stFile As String, stAddin As String
    Dim rng As Range
    stFile = "<ExcelPath>"
    'Instantiate a new session with the COM-Object Excel.exe.
    Set xlApp = New Excel.Application
    Set xlwbBook = xlApp.Workbooks.Open(stFile)
    Set xlwsSheet = xlwbBook.Worksheets("<WorkSheets>")
    xlwsSheet.Activate
    'Getting the first cell to input the data.
    xlwsSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
    y = xlApp.ActiveCell.Column - 1
    xlApp.ActiveCell.Offset(1, -y).Select
    x = xlwsSheet.Application.ActiveCell.Cells.Address
    'Opening the recordset based on the SQL query and saving the data in the Excel worksheet.
    rs.CursorLocation = adUseClient
    If rs.State = adStateOpen Then
        rs.Close
    End If
    rs.Open SQL, con
    If rs.RecordCount > 0 Then
        rs.MoveFirst
        x = Replace(x, "$", "")
        y = Mid(x, 2)
        Set rng = xlwsSheet.Range(x)
        xlwsSheet.Range(x).CopyFromRecordset rs
    End If
    xlwbBook.Close True
    xlApp.Quit
    Set xlwsSheet = Nothing
    Set xlwbBook = Nothing
    Set xlApp = Nothing

End Sub
참고 이 코드 예제에서 다음 자리 표시자를 대체하십시오.
  • <AccessPath>
  • <ExcelPath>
  • <MyQuery>
    <MyQuery>는 Access 데이터베이스에서 테이블에 대해 실행하는 쿼리의 자리 표시자입니다. 쿼리 결과는 Excel 통합 문서로 내보내집니다.
  • <WorkSheets>
    <WorkSheets>는 결과를 내보낼 Excel 워크시트의 자리 표시자입니다.
이 코드 예제를 실행하려면 Ctrl+G를 눌러 즉시 실행 창을 열고 WorkArounds를 입력한 다음 Enter 키를 누르십시오.

추가 정보

법적인 문제로 인해 Microsoft는 Access 2003 및 Access 2002의 경우 Excel 통합 문서의 범위를 나타내는 연결된 테이블에서 사용자가 데이터를 변경하지 못하도록 설정해 두었습니다. 그러나 Excel 통합 문서에서 직접 변경하면 Access의 연결된 테이블에 변경 내용이 나타납니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 904953 - 마지막 검토: 2006년 9월 13일 수요일 - 수정: 5.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Access 2002 Runtime
  • Microsoft Office Access 2003 Runtime
키워드:?
kbtshoot kbdatabase kbprb kbexpertiseadvanced KB904953

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com