Não é possível alterar, adicionar nem eliminar dados nas tabelas que estão associadas a um livro do Excel no Office Access 2007, Office Access 2003 ou Access 2002

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de Abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Aprenda o que isto significa para si e como pode ficar protegido.

Sintomas
No Microsoft Office Access 2007, Microsoft Office Access 2003 ou Microsoft Access 2002, não é possível alterar, adicionar nem eliminar dados em tabelas que estão ligadas a um livro do Microsoft Excel.

Além disso, poderá verificar este comportamento quando se verificar uma das seguintes condições:
  • Cria uma consulta para obter dados de tabelas que estão ligadas a um livro do Excel.
  • Cria um formulário que acede a dados de tabelas que estão ligadas a um livro do Excel.
  • Utiliza DAO ou ADO para actualizar programaticamente tabelas que estão ligadas a um livro do Excel.
Recebe a seguinte mensagem quando efectua uma consulta para actualizar registos num livro do Excel ligado:
A operação deve utilizar uma consulta actualizável
Recebe a seguinte mensagem quando utiliza DAO para actualizar programaticamente tabelas que estão ligadas a um livro do Excel:
Runtime Error '3027' Não é possível actualizar. Base de dados ou objecto só de leitura.
Quando tenta actualizar os dados ligados no ADO, a mensagem é a mesma, mas o número do erro pode ser semelhante ao seguinte:
-2147217911 (80040e09)
Quando executa uma consulta para inserir registos num livro do Excel, recebe a seguinte mensagem de erro mesmo que o livro do Excel não esteja ligado a uma base de dados do Access:
A operação deve utilizar uma consulta actualizável
Causa
Este comportamento previsto ocorre quando se verifica uma das seguintes condições:
  • Se estiver a utilizar o Office Access 2007.
  • Instalou o Microsoft Office 2003 Service Pack 2 (SP2), um Service Pack posterior ou quaisquer actualizações do Access 2003 disponibilizadas após o Office 2003 SP2.

    Para obter mais informações sobre o Microsoft Office 2003 Service Pack 2, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
    887616 Descrição do Office 2003 Service Pack 2
  • Instalou a actualização do Access 2002 (KB904018) datada de 18 de Outubro de 2005.

    Para obter mais informações sobre a actualização do Access 2002 (KB904018), clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
    904018 Descrição da actualização do Access 2002: 18 de Outubro de 2005
  • Instalou uma aplicação de tempo de execução do Access que inclui o Microsoft Office 2003 Service Pack 2 (SP2) ou um Service Pack posterior, actualizações do Access 2003 disponibilizadas depois do Office 2003 SP2 ou a actualização do Access 2002 (KB904018), de 18 de Outubro de 2005, ou posteriores.
    Para obter mais informações sobre como incluir ficheiros de actualização do Office numa aplicação de tempo de execução do Access, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
    916176 O assistente utiliza os ficheiros run-time incluídos com a versão do Access quando cria um pacote de instalação para uma aplicação no Access 2003 ou Access 2002
Como contornar
Para contornar este comportamento previsto, utilize um dos seguintes métodos.

Método 1: Utilizar o Microsoft Excel

Abra o livro do Excel ligado no Microsoft Excel e efectue as alterações no livro. Quando tiver terminado as alterações, guarde as alterações e feche o livro.

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

Importe o livro do Excel ligado para o Access e efectue as alterações nos dados. Quando tiver terminado as alterações, exporte os dados como um ficheiro .xls do Excel.

Para exportar a tabela do Access para o Excel, execute o seguinte código no 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 Neste exemplo de código, substitua os seguintes marcadores de posição:
  • <AccessPath>
  • <ExcelPath>
  • <MyQuery>
    <MyQuery> é um marcador de posição para a consulta executada contra as tabelas da base de dados do Access. O resultado da consulta é exportado para o livro do Excel.
  • <WorkSheets>
    <WorkSheets> é um marcador de posição para a folha do Excel para a qual pretende exportar o resultado.
Para executar este exemplo de código, prima CTRL+R para abrir a janela Immediate, escreva WorkArounds e prima ENTER.
Mais Informação
Por questões legais, a Microsoft desactivou a funcionalidade do Access 2003 e do Access 2002 que permitia que os utilizadores alterassem os dados em tabelas ligadas que apontassem para um conjunto num livro do Excel. No entanto, quando efectua alterações directamente no livro do Excel, as alterações são apresentadas na tabela ligada no 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
Propriedades

ID do Artigo: 904953 - Última Revisão: 12/05/2007 17:12:25 - Revisão: 7.4

Microsoft Office Access 2007, Microsoft Office Access 2007 Runtime, Microsoft Office Access 2003, Microsoft Office Access 2003 Runtime, Microsoft Office Excel 2003, Microsoft Access 2002 Standard Edition, Microsoft Access 2002 Runtime, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition

  • kbexpertiseadvanced kbdatabase kbtshoot kbprb KB904953
Comentários