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

Ha finalizado el soporte técnico para Office 2003

Microsoft puso fin al soporte técnico para Office 2003 el 8 de abril de 2014. Este cambio ha afectado a las actualizaciones de software y las opciones de seguridad. Sepa qué significa esto en su caso y cómo puede mantenerse protegido.

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 SubLeave:        MsgBox Err.Description, vbCritical, "Error"        Exit SubEnd SubPrivate 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 = NothingEnd 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.
edit access2003 access2k3 acc2003 acc2k3 access2002 access2k2 accessxp acc2002 acc2k2 accxp excel2003 excel2k3 xl2003 xl2k3 excel2002 excel2k2 excelxp xl2002 xl2k2 xlxp excel2000 excel2k xl2000 xl2k
Propiedades

Id. de artículo: 904953 - Última revisión: 05/22/2007 18:38:43 - Revisión: 6.1

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

  • kbexpertiseadvanced kbdatabase kbtshoot kbprb KB904953
Comentarios