V tabulkách propojených se sešitem aplikace Excel nelze v aplikaci Office Access 2007, Office Access 2003 či Office Access 2002 měnit, přidávat ani odstraňovat data

Překlady článku Překlady článku
ID článku: 904953 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

V tabulkách propojených se sešitem aplikace Excel nelze v aplikacích Office Access 2007, Office Access 2003 či Office Access 2002 měnit, přidávat ani odstraňovat data.

S tímto chováním se můžete setkat také v případě splnění jakékoli z následujících podmínek:
  • Sestavili jste dotaz na načtení dat z tabulek propojených se sešitem aplikace Excel.
  • Sestavili jste formulář, který zpřístupňuje data z tabulek propojených se sešitem aplikace Excel.
  • Používáte objekty DAO nebo ADO pro programovou aktualizaci tabulek propojených se sešitem aplikace Excel.
Při provádění dotazu na aktualizaci záznamů v propojeném sešitu aplikace Excel se zobrazí následující zpráva:
Operace musí používat aktualizovatelný dotaz.
Při použití objektu DAO pro programovou aktualizaci tabulek propojených se sešitem aplikace Excel se zobrazí následující zpráva:
Chyba za běhu 3027 Nelze aktualizovat. Databáze či objekt je pouze pro čtení.
Při pokusu o aktualizaci propojených dat v objektu ADO je zpráva stejná, ale číslo chyby může být podobné následujícímu číslu:
-2147217911 (80040e09)
Při spuštění dotazu na vložení záznamů do sešitu aplikace Excel se zobrazí následující chybová zpráva, a to i v případě, že sešit aplikace Excel není propojen s databází aplikace Access.
Operace musí používat aktualizovatelný dotaz.

Příčina

Toto očekávané chování nastává, pokud je splněna alespoň jedna z následujících podmínek:
  • Používáte aplikaci Office Access 2007.
  • Máte nainstalovanou aktualizaci Microsoft Office 2003 Service Pack 2 (SP2) nebo aktualizace aplikace Access 2003, které byly vydány až po vydání aktualizace Office 2003 SP2.

    Další informace o aktualizaci Office 2003 Service Pack 2 naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
    887616 Popis aktualizace Service Pack 2 sady Office 2003
  • Máte nainstalovanou aktualizaci pro aplikaci Access 2002 (KB904018) vydanou 18. října 2005.

    Další informace o aktualizaci pro aplikaci Access 2002 (KB904018) naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
    904018 Popis aktualizace pro aplikaci Access 2002: 18. října 2005 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
  • Nainstalovali jste aplikaci Access runtime, která zahrnuje aktualizaci Microsoft Office 2003 Service Pack 2 (SP2), jakékoli aktualizace aplikace Access 2003vydané po aktualizaci Office 2003 SP2 nebo aktualizaci aplikace Access 2002 (KB904018) vydanou 18. října 2005 či později.
    Další informace o zahrnutí souborů aktualizace Office do aplikace Access runtime naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
    916176 Při vytváření instalačního balíčku pro aplikaci v aplikacích Access 2003 nebo Access 2002 používá průvodce soubory runtime z prodejní verze aplikace Access (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Jak potíže obejít

Chcete-li se tomuto očekávanému chování vyhnout, použijte některou z následujících metod:

Metoda 1: Použijte aplikaci Microsoft Excel

Otevřete propojený sešit aplikace Excel v aplikaci Microsoft Excel a poté proveďte změny v sešitu. Po dokončení všech změn uložte změny a zavřete sešit.

Metoda 2: Použijte aplikace Office Access 2007, Access 2003 nebo Access 2002

Importujte propojený sešit aplikace Excel do aplikace Access a poté proveďte změnu dat. Po dokončení změn exportujte data jako soubor aplikace Excel ve formátu XLS.

Chcete-li exportovat tabulku z aplikace Access do aplikace Excel, spusťte v aplikaci Access následující kód.
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=<Cesta_Access>"
    'Poznámka: V aplikaci Office Access 2007 použijte následující řádek kódu:
    'Db.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=<Cesta_Access>"
    SQL = "<Můj_dotaz>"
    CopyRecordSetToXL SQL, Db
    Db.Close
    MsgBox "Aplikace Access úspěšně exportovala data do souboru ve formátu Excel.", vbInformation, "Export proběhl úspěšně."
    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 oExcel 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 = "<Cesta_Excel>"
    'Vytvoření instance nové relace objektu COM Excel.exe.
    Set xlApp = New Excel.Application
    Set xlwbBook = xlApp.Workbooks.Open(stFile)
    Set xlwsSheet = xlwbBook.Worksheets("<Listy>")
    xlwsSheet.Activate
    'Získání první buňky pro vstup dat.
    xlwsSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
    y = xlApp.ActiveCell.Column - 1
    xlApp.ActiveCell.Offset(1, -y).Select
    x = xlwsSheet.Application.ActiveCell.Cells.Address
    'Otevření sady záznamů na základě dotazu SQL a uložení dat do sešitu Excel
    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
Poznámka: V tomto příkladu kódu nahraďte následující zástupné symboly:
  • <Cesta_Access>
  • <Cesta_Excel>
  • <Můj_dotaz>
    <Můj_dotaz> je zástupný symbol pro dotaz spuštěný pro tabulky v databázi aplikace Access. Výsledek dotazu je exportován do sešitu aplikace Excel.
  • <Listy>
    <Listy> je zástupným symbolem pro list v aplikaci Excel, do kterého chcete exportovat výsledek.
Chcete-li spustit příklad kódu, stisknutím kombinace kláves CTRL+G otevřete okno Immediate, zadejte WorkArounds a stiskněte klávesu ENTER.

Další informace

Z právních důvodů společnost Microsoft omezila funkce, které v aplikacích Access 2003 a Access 2002 dovolovaly uživatelům upravovat data v tabulkách propojených s aplikací Excel odkazujících na oblast v sešitu aplikace Excel. Nicméně pokud provedete změny přímo v sešitu aplikace Excel, změny se zobrazí v propojené tabulce v aplikaci Access.

Vlastnosti

ID článku: 904953 - Poslední aktualizace: 25. června 2007 - Revize: 6.1
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbexpertiseadvanced kbdatabase kbtshoot kbprb KB904953

Dejte nám zpětnou vazbu

 

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