Identificativo articolo: 330383 - Ultima modifica: martedì 26 settembre 2006 - Revisione: 5.1

Come determinare se la cartella di lavoro contiene collegamenti a dati esterni in Excel 2002 ed Excel 2003

In questa pagina

Espandi tutto | Chiudi tutto

Sommario

Le cartelle di lavoro di Excel possono contenere intervalli di dati esterni i cui dati vengono recuperati dalle origini dati seguenti:
  • Servizi OLAP Microsoft SQL Server (provider OLAP)
  • Microsoft Access
  • dBASE
  • Microsoft FoxPro
  • Microsoft Excel
  • Oracle
  • Paradox
  • SQL Server
  • Database di file di testo
  • Provider di terze parti
È anche possibile utilizzare driver ODBC o driver di origini dati di altri produttori per ottenere informazioni da origini dati non elencate in questo articolo, compresi altri tipi di database OLAP. È possibile utilizzare l'origine dati esterna in un intervallo di dati o in una tabella di query di un foglio di lavoro o in una tabella pivot.

Potrebbe essere utile determinare se un foglio di lavoro ricevuto da un altro utente contiene collegamenti a origini dati esterni, in modo da decidere se considerare affidabili o meno le origini e se i dati dovranno essere aggiornati regolarmente o all'apertura della cartella di lavoro. È anche possibile eliminare i collegamenti ai dati esterni e mantenere i valori correnti.

In questo articolo sono illustrati i seguenti argomenti:
  • Generazione di un elenco di tutte le origini dati esterne in un'intera cartella di lavoro.
  • Selezione di tutti gli intervalli di dati esterni in un unico foglio di lavoro.
  • Modalità per determinare se un intervallo di dati esterni in una cartella di lavoro viene aggiornato automaticamente.
  • Utilizzo della finestra di dialogo Modifica collegamenti.

Informazioni

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presume che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare procedura, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare procedure atte a soddisfare specifiche esigenze.

Generazione di un elenco di tutte le origini dati esterne in un'intera cartella di lavoro

Per elencare tutti gli intervalli di dati esterni in una cartella di lavoro di Microsoft Excel:
  1. Avviare Excel e aprire la cartella di lavoro in cui si desidera cercare origini dati esterne.
  2. Scegliere Macro dal menu Strumenti, quindi fare clic su Visual Basic Editor.
  3. In Visual Basic Editor scegliere Modulo dal menu Inserisci.
  4. Nella finestra del modulo digitare il seguente codice:
    Sub ListWebQueryPivotTableLinks()
        Dim wbA As Workbook, wsN As Worksheet, ws As Worksheet
        Dim pt As PivotTable, qt As QueryTable, R As Long, i As Long
        Dim vLnkSrc As Variant
        Const PROGCREATE As String = "This external " & _
                                    "data range was created " & _
                                    "programmatically and cannot be edited"
        On Error GoTo errHandler
        Set wbA = ActiveWorkbook
        Set wsN = Workbooks.Add(xlWorksheet).Worksheets(1)
        wsN.Name = wbA.Name
        wsN.Range("A1:E1").Value = Array("Name", "Location", _
                "Type", "Connection", "CommandText")
        wsN.Range("A1:E1").Font.Bold = True
        R = 1
        For Each ws In wbA.Worksheets
            For Each pt In ws.PivotTables
                R = R + 1
                With pt.PivotCache
                    wsN.Cells(R, 1).Value = pt.Name
                    wsN.Cells(R, 2).Value = ws.Name & "!" & _
                            pt.TableRange2.Address(False, False)
                    Select Case .SourceType
                    Case xlConsolidation
                        R = R - 1
                        For i = 1 To UBound(.SourceData)
                            R = R + 1
                            wsN.Cells(R, 1).Value = pt.Name
                            wsN.Cells(R, 2).Value = ws.Name & "!" & _
                                    pt.TableRange2.Address(False, False)
                            wsN.Cells(R, 3).Value = _
                                    "PivotTable - Consolidation Range"
                            wsN.Cells(R, 4).Value = "'" & _
                                    .SourceData(i, 1)
                            wsN.Cells(R, 5).Value = "n/a"
                        Next
                    Case xlDatabase
                        wsN.Cells(R, 3).Value = "PivotTable - Excel List"
                        wsN.Cells(R, 4).Value = "'" & .SourceData
                        wsN.Cells(R, 5).Value = "n/a"
                    Case xlExternal
                        If .OLAP Then
                            wsN.Cells(R, 3).Value = "PivotTable - OLAP"
                            wsN.Cells(R, 4).Value = "'" & .Connection
                            wsN.Cells(R, 5).Value = .CommandText
                        ElseIf .QueryType = xlADORecordset Then
                            wsN.Cells(R, 3).Value = _
                                    "PivotTable - ADO Recordset"
                            wsN.Cells(R, 4).Value = PROGCREATE
                            wsN.Cells(R, 5).Value = "'" & .Recordset.Source
                        Else
                            wsN.Cells(R, 3).Value = _
                                    "PivotTable - External Data"
                            wsN.Cells(R, 4).Value = "'" & .Connection
                            wsN.Cells(R, 5).Value = .CommandText
                        End If
                    Case xlScenario
                        wsN.Cells(R, 3).Value = "PivotTable - Scenario"
                        wsN.Cells(R, 4).Value = "Based upon a Scenario " & _
                                "in this workbook"
                        wsN.Cells(R, 5).Value = "n/a"
                    End Select
                End With
            Next
            For Each qt In ws.QueryTables
                R = R + 1
                wsN.Cells(R, 1).Value = qt.Name
                wsN.Cells(R, 2).Value = ws.Name & "!" & _
                        qt.ResultRange.Address(False, False)
                Select Case qt.QueryType
                Case xlTextImport
                    wsN.Cells(R, 3).Value = "Text Import"
                    wsN.Cells(R, 4).Value = "'" & qt.Connection
                    wsN.Cells(R, 5).Value = "n/a"
                Case xlOLEDBQuery
                    wsN.Cells(R, 3).Value = "Query Table - OLEDB Query"
                    wsN.Cells(R, 4).Value = "'" & qt.Connection
                    wsN.Cells(R, 5).Value = "'" & qt.CommandText
                Case xlWebQuery
                    wsN.Cells(R, 3).Value = "Web Query Table"
                    wsN.Cells(R, 4).Value = "'" & qt.Connection
                    wsN.Cells(R, 5).Value = "n/a"
                Case xlADORecordset
                    wsN.Cells(R, 3).Value = "Query Table - ADO Recordset"
                    wsN.Cells(R, 4).Value = PROGCREATE
                    wsN.Cells(R, 5).Value = "'" & qt.Recordset.Source
                Case xlDAORecordset
                    wsN.Cells(R, 3).Value = "Query Table - DAO Recordset"
                    On Error Resume Next
                    wsN.Cells(R, 4).Value = "'" & qt.Recordset.Parent.Name
                    If Err.Number <> 0 Then
                        wsN.Cells(R, 4).Value = PROGCREATE
                        Err.Clear
                    End If
                    wsN.Cells(R, 5).Value = "'" & qt.Recordset.Name
                    If Err.Number <> 0 Then
                        wsN.Cells(R, 5).Value = PROGCREATE
                        Err.Clear
                    End If
                    On Error GoTo errHandler
                Case xlODBCQuery
                    wsN.Cells(R, 3).Value = "Query Table"
                    wsN.Cells(R, 4).Value = "'" & qt.Connection
                    wsN.Cells(R, 5).Value = qt.CommandText
                End Select
    
            Next
        Next
        vLnkSrc = wbA.LinkSources
        If Not IsEmpty(vLnkSrc) Then
            For i = 1 To UBound(vLnkSrc)
                R = R + 1
                wsN.Cells(R, 1).Value = "n/a"
                wsN.Cells(R, 2).Value = "n/a"
                wsN.Cells(R, 3).Value = "Link Source (Edit | Links)"
                wsN.Cells(R, 4).Value = vLnkSrc(i)
            Next
        End If
        wsN.Cells.WrapText = False
        wsN.Columns.AutoFit
        wsN.UsedRange.AutoFilter
        Exit Sub
    errHandler:
        MsgBox "An error has occurred." & vbCr & Err.Number & _
                vbCr & Err.Description
        Resume Next
    End Sub
    					
  5. Scegliere Chiudi e torna a Microsoft Excel dal menu File.
  6. Scegliere Macro dal menu Strumenti, quindi Macro.
  7. Nell'elenco delle macro fare clic su ListWebQueryPivotTableLinks, quindi scegliere Esegui.

    Tutte le origini dati esterne, compresi i dettagli relativi all'origine, al percorso, al tipo e alla connessione, saranno elencate in una nuova cartella di lavoro.

Selezione di tutti gli intervalli di dati esterni in un unico foglio di lavoro

Per selezionare tutti gli intervalli di dati esterni in un foglio di lavoro di Microsoft Excel:
  1. Avviare Excel e aprire la cartella di lavoro contenente gli intervalli di dati esterni che si desidera selezionare.

    Fare clic sulla scheda del foglio che si intende controllare.
  2. Scegliere Macro dal menu Strumenti, quindi fare clic su Visual Basic Editor.
  3. In Visual Basic Editor scegliere Modulo dal menu Inserisci.
  4. Nella finestra del modulo digitare il seguente codice:
    'This Sub procedure selects all cells in the worksheet that are part of
    'external data ranges
    Sub SelectAllQueryTables()
        FirstCell = 1
        For Each xQuery In ActiveSheet.QueryTables
            If FirstCell = 1 Then
                Set xRange = xQuery.ResultRange
                FirstCell = 0
            Else
                Set xRange = Application.Union(xRange, xQuery.ResultRange)
            End If
        Next xQuery
        xRange.Select
    End Sub
    					
  5. Scegliere Chiudi e torna a Microsoft Excel dal menu File.
  6. Scegliere Macro dal menu Strumenti, quindi Macro.
  7. Nell'elenco delle macro fare clic su SelectAllQueryTables, quindi scegliere Esegui.

    Tutti gli intervalli di dati esterni verranno selezionati e sarà possibile spostarsi da una cella all'altra della selezione premendo TAB. Selezionare un foglio di lavoro differente e ripetere i passaggi 6 e 7 per selezionare gli intervalli di dati esterni in esso contenuti.

Modalità per determinare se un intervallo di dati esterni in una cartella di lavoro viene aggiornato automaticamente

Per determinare se i dati di un intervallo di dati esterni vengono recuperati automaticamente:
  1. Selezionare tutti gli intervalli di dati esterni contenuti nel foglio di lavoro utilizzando la macro SelectAllQueryTables.
  2. Fare clic con il pulsante destro del mouse in una cella di un intervallo di dati esterni selezionato e scegliere Proprietà intervallo dati.
  3. Nella finestra di dialogo Proprietà intervallo dati esterno verificare le caselle di controllo Aggiorna ogni n minuti e Aggiorna dati all'apertura del file.

    Se una delle caselle di controllo è selezionata, i dati verranno aggiornati automaticamente in base all'intervallo impostato o all'apertura del file. Per impedire che i dati vengano aggiornati automaticamente, deselezionare le caselle di controllo Aggiorna ogni n minuti e Aggiorna dati all'apertura del file.
  4. Fare clic con il pulsante destro del mouse in una cella dello stesso intervallo di dati esterni selezionato e scegliere Parametri, se disponibile.
  5. Fare clic su ciascun elemento a sinistra della finestra di dialogo.

    Se la casella di controllo Aggiorna automaticamente se cambia il valore della cella è selezionata, i dati dell'intervallo di dati esterni potranno essere recuperati automaticamente. Per impedirlo, deselezionare la casella di controllo.
  6. Ripetere i passaggi da 2 a 5 per ogni intervallo di dati esterni contenuto nella cartella di lavoro.

Selezione di tutte le tabelle pivot di un foglio di lavoro

Per selezionare tutte le tabelle pivot in un foglio di lavoro di Microsoft Excel:
  1. Avviare Excel e aprire la cartella di lavoro contenente le tabelle pivot che si desidera selezionare. Fare clic sulla scheda del foglio che si intende controllare.
  2. Scegliere Macro dal menu Strumenti, quindi fare clic su Visual Basic Editor.
  3. In Visual Basic Editor scegliere Modulo dal menu Inserisci.
  4. Nella finestra del modulo digitare il seguente codice:
    'This Sub procedure selects all cells in the worksheet that are part of
    'PivotTable reports
    Sub SelectAllPivotTables()
        FirstCell = 1
        For Each xQuery In ActiveSheet.PivotTables
            If FirstCell = 1 Then
                Set xRange = xQuery. TableRange2
                FirstCell = 0
            Else
                Set xRange = Application.Union(xRange, xQuery.TableRange2)
            End If
        Next xQuery
        xRange.Select
    End Sub
    					
  5. Scegliere Chiudi e torna a Microsoft Excel dal menu File.
  6. Scegliere Macro dal menu Strumenti, quindi Macro.
  7. Nell'elenco delle macro fare clic su SelectAllPivotTables, quindi scegliere Esegui.

    Tutte le tabelle pivot del foglio di lavoro saranno selezionate. Selezionare un foglio di lavoro differente e ripetere i passaggi 6 e 7 per selezionare le tabelle pivot in esso contenute.

Modalità per determinare se un rapporto di tabella pivot in una cartella di lavoro viene aggiornato automaticamente

Per determinare se i dati di una tabella pivot vengono recuperati automaticamente:
  1. Selezionare tutti gli intervalli di tabella pivot contenuti nel foglio di lavoro utilizzando la macro SelectAllPivotTables.
  2. Fare clic con il pulsante destro del mouse in una cella di una tabella pivot e scegliere Opzioni tabella.
  3. Nella finestra di dialogo Opzioni tabella pivot verificare le caselle di controllo Aggiorna ogni n minuti e Aggiorna all'apertura.

    Se una delle caselle di controllo è selezionata, i dati verranno aggiornati automaticamente in base all'intervallo impostato o all'apertura del file. Per impedire che i dati vengano aggiornati automaticamente, deselezionare le caselle di controllo Aggiorna ogni n minuti e Aggiorna all'apertura.
  4. Ripetere i passaggi 2 e 3 per ogni tabella pivot della cartella di lavoro.

Utilizzo della finestra di dialogo "Modifica collegamenti"

Se nelle celle di una cartella di lavoro sono contenute formule che fanno riferimento a cartelle di lavoro di Excel esterne, è possibile visualizzare tali collegamenti e determinare il modo in cui vengono aggiornati utilizzando la finestra di dialogo Modifica collegamenti. Per utilizzare questa finestra di dialogo:
  1. Scegliere Collegamenti dal menu Modifica per visualizzare la finestra di dialogo Modifica collegamenti.
  2. Nella finestra di dialogo Modifica collegamenti è visualizzato un elenco di collegamenti a cartelle di lavoro esterne.
  3. Per aggiornare tutti i dati manualmente, fare clic su Aggiorna valori.
  4. Per modificare l'origine di un collegamento, selezionare innanzitutto il collegamento da modificare, quindi fare clic su Cambia origine.

    Selezionare una nuova origine e scegliere OK.
  5. Per aprire un'origine, selezionare innanzitutto il collegamento che si desidera aprire, quindi fare clic su Apri origine.
  6. Per interrompere il collegamento all'origine dati esterna, fare clic su Interrompi collegamento.

    In seguito all'esecuzione di questo comando, i dati correnti delle celle vengono conservati, ma vengono rimossi i riferimenti ai dati esterni.
  7. Per verificare lo stato e la disponibilità dei collegamenti, fare clic su Verifica stato.

Riferimenti

Per ulteriori informazioni sui dati esterni in cartelle di lavoro di Excel, fare clic sul numero dell'articolo della Knowledge Base riportato di seguito:
223789  (http://support.microsoft.com/kb/223789/ ) Riduzione della quantità di metadati nelle cartelle di lavoro di Microsoft Excel
Per ulteriori informazioni su come impedire l'aggiornamento automatico dei dati in Excel, fare clic sul numero dell'articolo della Knowledge Base riportato di seguito:
248204  (http://support.microsoft.com/kb/248204/ ) Richiesta di attivazione dell'aggiornamento automatico all'apertura di una cartella di lavoro di Excel
Per ulteriori informazioni sulla rimozione di collegamenti, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
288853  (http://support.microsoft.com/kb/288853/ ) XL2002: Il nome definito non viene rimosso quando si interrompe un collegamento

Le informazioni in questo articolo si applicano a
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
Chiavi: 
kbxlslink kbformat kbhowto KB330383
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
 

Traduzione articoli

 

Related Support Centers