No puede cambiar, agregar o eliminar datos en las tablas que están vinculadas a un libro de Excel en Office Access 2003 o en Access 2002

Seleccione idioma Seleccione idioma
Id. de artículo: 904953 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

En Microsoft Office Access 2007, en Microsoft Office Access 2003 o en Microsoft Access 2002 no puede cambiar, agregar o eliminar datos en tablas que están vinculadas a un libro de Microsoft Excel.

Además, puede experimentar este comportamiento cuando se cumple cualquiera de las condiciones siguientes:
  • Crea una consulta para recuperar datos de tablas que están vinculadas a un libro de Excel.
  • Crea un formulario que tiene acceso a datos de tablas que están vinculadas a un libro de Excel.
  • Utiliza DAO o ADO para actualizar mediante programación tablas que están vinculadas a un libro de Excel.
Recibe el mensaje de error siguiente cuando realiza una consulta para actualizar registros en un libro vinculado de Excel:
La operación debe usar una consulta actualizable
Recibe el mensaje de error siguiente cuando utiliza DAO para actualizar mediante programación tablas que están vinculadas a un libro de Excel:
Error en tiempo de ejecución '3027' No se puede actualizar. Base de datos u objeto de sólo lectura.
Cuando intenta actualizar los datos vinculados en ADO, el mensaje es el mismo, pero el número del error puede ser similar al siguiente:
-2147217911 (80040e09)
Cuando ejecuta una consulta para insertar registros en un libro de Excel, recibe el mensaje de error siguiente aunque el libro de Excel no esté vinculado a una base de datos de Access:
La operación debe usar una consulta actualizable

Causa

Este comportamiento esperado se produce cuando se cumple una de las condiciones siguientes:
  • Utiliza Office Access 2007.
  • Ha instalado Microsoft Office 2003 Service Pack 2 (SP2) o alguna actualización de Access 2003 publicada después de Office 2003 SP2.

    Para obtener más información acerca de Microsoft Office 2003 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    887616 Descripción del Service Pack 2 de Office 2003
  • Ha instalado la actualización para Access 2002 (KB904018) de fecha 18 de octubre de 2005.

    Para obtener más información acerca de la actualización para Access 2002 (KB904018), haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    904018 Descripción de la actualización para Access 2002: 18 de octubre de 2005
  • Ha instalado una aplicación en tiempo de ejecución de Access que incluye Microsoft Office 2003 Service Pack 2 (SP2), cualquier actualización para Access 2003 publicada después de Office 2003 SP2, o la actualización para Access 2002 (KB904018) de fecha 18 de octubre de 2005 o posterior.
    Para obtener más información acerca de cómo incluir archivos de actualización de Office con una aplicación en tiempo de ejecución de Access, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    916176 El asistente usa los archivos en tiempo de ejecución que se incluyen con la versión de lanzamiento de Access cuando crea un paquete de la instalación para una aplicación en Access 2003 o en Access 2002

Solución

Para solucionar temporalmente este comportamiento esperado, utilice uno de los métodos siguientes.

Método 1: utilice Microsoft Excel

Abra el libro vinculado de Excel en Microsoft Excel y realice cambios en el libro. Cuando haya completado los cambios, guárdelos y cierre el libro.

Método 2: Utilice Office Access 2007, Access 2003 o Access 2002

Importe el libro vinculado de Excel a Access y realice cambios en los datos. Cuando haya completado los cambios, expórtelos como un archivo .xls de Excel.

Para exportar la tabla de Access a Excel, ejecute el código siguiente en 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>"
    'Note: In Office Access 2007, use the following line of code:
    'Db.Open "PROVIDER=Microsoft.ACE.OLEDB.12.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
Nota: en este ejemplo de código, reemplace los marcadores de posición siguientes:
  • <rutaDeAccess>
  • <rutaDeExcel>
  • <MiConsulta>
    &lt:MiConsulta> es un marcador de posición para la consulta que ejecuta en las tablas de la base de datos de Access. El resultado de la consulta se exporta al libro de Excel.
  • <HojasDeCálculo>
    <HojasDeCálculo> es un marcador de posición para la hoja de cálculo de Excel a la que desea exportar el resultado.
Para ejecutar este ejemplo de código, presione CTRL+G para abrir la ventana Inmediato, escriba WorkArounds y presione ENTRAR.

Más información

Debido a problemas legales, Microsoft ha deshabilitado en Access 2003 y en Access 2002 la funcionalidad que permite a los usuarios modificar los datos de tablas vinculadas que señalan a un rango de un libro de Excel. Sin embargo, cuando realiza cambios directamente en el libro de Excel, los cambios aparecen en la tabla vinculada en Access.

Propiedades

Id. de artículo: 904953 - Última revisión: martes, 22 de mayo de 2007 - Versión: 6.1
La información de este artículo se refiere a:
  • Microsoft Office Access 2007
  • 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
Palabras clave: 
kbexpertiseadvanced kbdatabase kbtshoot kbprb KB904953

Enviar comentarios

 

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