Al momento sei offline in attesa che la connessione Internet venga ristabilita

Impossibile modificare, aggiungere o eliminare dati in tabelle collegate a una cartella di lavoro di Excel in Office Access 2007, in Office Access 2003 o in Access 2002

Il supporto per Office 2003 è terminato

Il supporto Microsoft per Office 2003 è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

Sintomi
In Microsoft Office Access 2007, in Microsoft Office Access 2003 o in Microsoft Access 2002 risulta impossibile modificare, aggiungere o eliminare dati in tabelle collegate a una cartella di lavoro di Microsoft Excel.

È inoltre possibile che si verifichi questo problema in presenza di una delle seguenti condizioni:
  • Si crea una query per recuperare dati da tabelle collegate a una cartella di lavoro di Excel.
  • Si crea un modulo che accede a dati di tabelle collegate a una cartella di lavoro di Excel.
  • Si utilizza DAO o ADO per aggiornare a livello di programmazione tabelle collegate a una cartella di lavoro di Excel.
Quando si esegue una query per aggiornare i record di una cartella di lavoro di Excel collegata, viene visualizzato un messaggio di errore analogo al seguente:
Per l'operazione è necessaria una query aggiornabile
Quando si utilizza DAO per aggiornare al livello di programmazione tabelle collegate a una cartella di lavoro di Excel, viene visualizzato un messaggio di errore analogo al seguente:
Errore di runtime '3027' Impossibile aggiornare. Database o oggetto di sola lettura.
Quando si tenta di aggiornare i dati collegati in ADO, il messaggio è lo stesso ma il codice di errore potrebbe essere simile al seguente:
-2147217911 (80040e09)
Quando si esegue una query per inserire record in una cartella di lavoro di Excel, viene visualizzato un messaggio di errore analogo al seguente anche se la cartella di lavoro non è collegata a un database di Access:
Per l'operazione è necessaria una query aggiornabile
Cause
Questo comportamento, del tutto intenzionale, si presenta quando si verifica una delle seguenti condizioni:
  • È in uso Office Access 2007.
  • Si è installato Microsoft Office 2003 Service Pack 2 (SP2) o un aggiornamento di Access 2003 rilasciato dopo Office 2003 SP2.

    Per ulteriori informazioni su Microsoft Office 2003 Service Pack 2, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    887616 Descrizione di Office 2003 Service Pack 2
  • Si è installato l'aggiornamento per Access 2002 (KB904018) datato 18 ottobre 2005.

    Per ulteriori informazioni sull'aggiornamento per Access 2002 (KB904018), fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    904018 Descrizione dell'aggiornamento per Access 2002 del 18 ottobre 2005
  • È stata installata un'applicazione Access Runtime che include Microsoft Office 2003 Service Pack 2 (SP2), tutti gli aggiornamenti di Access 2003 rilasciati dopo Office 2003 SP2 oppure l'aggiornamento di Access 2002 (KB904018) del 18 ottobre 2005 o successivo.
    Per ulteriori informazioni sull'inclusione dei file di aggiornamento di Office in un'applicazione Access Runtime, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    916176 Quando si crea un pacchetto di installazione per un'applicazione di Access 2003 o Access 2002, nella procedura guidata vengono utilizzati i file di runtime inclusi nella versione finale di Access
Workaround
Per ovviare a questo comportamento intenzionale, adottare uno dei seguenti metodi.

Metodo 1: Utilizzo di Microsoft Excel

Aprire in Microsoft Excel la cartella di lavoro di Excel collegata, quindi apportarvi le modifiche. Al termine, salvare le modifiche e chiudere la cartella di lavoro.

Metodo 2: Utilizzo di Office Access 2007, Access 2003 o Access 2002

Importare in Access la cartella di lavoro di Excel collegata, quindi apportare le modifiche ai dati. Al termine, esportare i dati come file xls di Excel.

Per esportare la tabella da Access in Excel, eseguire il codice seguente in 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 In questo codice di esempio, sostituire i seguenti segnaposto:
  • <AccessPath>
  • <ExcelPath>
  • <MyQuery>
    <MyQuery> è il segnaposto per la query che viene eseguita sulle tabelle del database di Access. Il risultato della query viene esportato nella cartella di lavoro di Excel.
  • <WorkSheets>
    <WorkSheets> è il segnaposto per il foglio di lavoro di Excel in cui si desidera esportare il risultato.
Per eseguire questo codice di esempio, premere CTRL+G per aprire la finestra Immediata, digitare WorkArounds, quindi premere INVIO.
Informazioni
Per problemi di natura legale, Microsoft ha disattivato la funzionalità di Access 2003 e Access 2002 che consente agli utenti di modificare i dati di tabelle collegate che fanno riferimento a un intervallo in una cartella di lavoro di Excel. Tuttavia, quando si apportano le modifiche direttamente nella cartella di lavoro di Excel, tali modifiche compaiono anche nella tabella collegata in 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
Proprietà

ID articolo: 904953 - Ultima revisione: 03/21/2007 11:41:54 - Revisione: 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
Feedback