Não é possível alterar, adicionar ou excluir dados das tabelas vinculadas a uma pasta de trabalho do Excel no Office Access 2007, no Office Access 2003 ou no Access 2002

Traduções deste artigo Traduções deste artigo
ID do artigo: 904953 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

No Microsoft Office Access 2007, no Microsoft Office Access 2003 ou no Microsoft Access 2002, não é possível alterar, adicionar ou excluir dados das tabelas vinculadas a uma pasta de trabalho do Microsoft Excel.

Além disso, você pode perceber esse comportamento quando qualquer uma das seguintes condições for verdadeira:
  • Você criou uma consulta para recuperar dados de tabelas vinculadas a uma pasta de trabalho do Excel.
  • Você criou um formulário que acessa dados de tabelas vinculadas a uma pasta de trabalho do Excel.
  • Você usa DAO ou ADO para atualizar programaticamente tabelas vinculadas a uma pasta de trabalho do Excel.
Você recebe a seguinte mensagem ao realizar uma consulta para atualizar registros em uma pasta de trabalho do Excel vinculada:
A operação deve usar uma consulta atualizável
Você recebe a seguinte mensagem quando usa o DAO para atualizar programaticamente tabelas vinculadas a uma pasta de trabalho do Excel:
Erro de tempo de execução 3027 Não é possível atualizar. Banco de dados ou objeto é do tipo somente leitura.
Quando você tenta atualizar os dados vinculados no ADO, a mensagem é a mesma, mas o número do erro pode ser semelhante ao seguinte:
-2147217911 (80040e09)
Ao executar uma consulta para inserir registros em uma pasta de trabalho do Excel, a seguinte mensagem de erro é exibida se a pasta de trabalho do Excel não for vinculada a um banco de dados do Access:
A operação deve usar uma consulta atualizável

Causa

Esse comportamento esperado ocorre quando uma das seguintes condições for verdadeira:
  • Você está usando o Office Access 2007.
  • Você instalou o Microsoft Office 2003 Service Pack 2 (SP2) ou quaisquer atualizações do Access 2003 lançadas após o Office 2003 SP2.

    Para obter informações adicionais sobre o Microsoft Office 2003 Service Pack 2, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    887616 Descrição do Office 2003 Service Pack 2
  • Você instalou a atualização para o Access 2002 (KB904018) com data de 18 de outubro de 2005.

    Para obter informações adicionais sobre a atualização para o Access 2002 (KB904018), clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    904018 Descrição da atualização para o Access 2002: 18.10.05
  • Você instalou um aplicativo de tempo de execução do Access que inclui o Microsoft Office 2003 Service Pack 2 (SP2), quaisquer atualizações do Access 2003 lançadas após o Office 2003 SP2, ou a atualização para Access 2002 (KB904018) com data de 18 de outubro de 2005 ou mais recente.
    Para obter informações adicionais sobre como incluir os arquivos de atualização do Office com um aplicativo de tempo de execução do Access, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
    916176 O assistente usa os arquivos de tempo de execução incluídos com a versão de lançamento do Access quando você cria um pacote de instalação para um aplicativo no Access 2003 ou no Access 2002

Como Contornar

Como solução alternativa para esse comportamento esperado, use um dos seguintes métodos.

Método 1: Usar o Microsoft Excel

Abra a pasta de trabalho vinculada do Excel no Microsoft Excel e faça suas alterações na pasta de trabalho. Quando você tiver concluído as alterações, salve-as e feche a pasta de trabalho.

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

Importe a pasta de trabalho vinculada do Excel para o Access e faça suas alterações nos dados. Quando você tiver concluído as alterações, exporte os dados para um arquivo .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 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
Note Nesse exemplo de código, substitua os seguintes espaços reservados:
  • <CaminhodoAccess>
  • <CaminhodoExcel>
  • <MinhaConsulta>
    <MinhaConsulta> representa a consulta executada nas tabelas no banco de dados do Access. O resultado da consulta é exportado para a pasta de trabalho do Excel.
  • <Planilhas>
    <Planilhas> representa a planilha do Excel para a qual você deseja exportar o resultado.
Para executar esse exemplo de código, pressione CTRL+G para abrir a janela Imediato, digite WorkArounds e pressione ENTER.

Mais Informações

Devido a problemas legais, a Microsoft desabilitou a funcionalidade no Access 2003 e no Access 2002 que permite que os usuários alterem dados em tabelas vinculadas que apontem para um intervalo em uma pasta de trabalho do Excel. No entanto, quando você faz as alterações diretamente na pasta de trabalho do Excel, as alterações aparecem na tabela vinculada no Access.

Propriedades

ID do artigo: 904953 - Última revisão: segunda-feira, 23 de abril de 2007 - Revisão: 6.1
A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbexpertiseadvanced kbdatabase kbtshoot kbprb KB904953

Submeter comentários

 

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