Det er ikke muligt at ændre, tilføje eller slette data i tabeller i Office Access 2007, Office Access 2003 eller Access 2002, der er kædet sammen med en Excel-projektmappe

Oversættelser af artikler Oversættelser af artikler
Artikel-id: 904953 - Få vist de produkter, som denne artikel refererer til.
Udvid alle | Skjul alle

På denne side

Symptomer

I Microsoft Office Access 2007, Microsoft Office Access 2003 eller Microsoft Access 2002 er det ikke muligt at ændre, tilføje eller slette data i tabeller, der er kædet sammen med en Excel-projektmappe.

Du kan også opleve dette problem, hvis en af følgende betingelser gælder:
  • Du opretter en forespørgsel for at hente data fra tabeller, der er kædet sammen med en Excel-projektmappe.
  • Du opretter en formular, der henter data fra tabeller, der er kædet sammen med en Excel-projektmappe.
  • Du bruger DAO eller ADO til at opdatere tabeller, der er kædet sammen med en Excel-projektmappe.
Du får vist følgende meddelelse, når du udfører en forespørgsel for at opdatere poster i en sammenkædet Excel-projektmappe:
Handlingen skal bruge en opdaterbar forespørgsel
Du får vist følgende meddelelse, når du bruger DAO eller ADO til at opdatere tabeller, der er kædet sammen med en Excel-projektmappe:
Kørselsfejl '3027' Databasen eller objektet er skrivebeskyttet og kan ikke opdateres.
Når du forsøger at opdater de sammenkædede data i ADO, er meddelelsen den samme, men fejlnummeret kan ligne følgende:
-2147217911 (80040e09)
Når du kører en forespørgsel for at indsætte poster i en Excel-projektmappen, får du vist følgende fejlmeddelelse, selvom Excel-projektmappen ikke er kædet sammen med en Access-database:
Handlingen skal bruge en opdaterbar forespørgsel

Årsag

Denne tilsigtede funktionsmåde sker, når en af følgende betingelser gælder:
  • Du bruger Office Access 2007.
  • Du har installeret Microsoft Office 2003 Service Pack 2 (SP2) eller Access 2003-opdateringer, der blev udgivet efter Office 2003 SP2.

    Yderligere oplysninger om Microsoft Office 2003 Service Pack 2 finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
    887616 Beskrivelse af Office 2003 Service Pack 2
  • Du har installeret opdateringen til Access 2002 (KB904018), der er dateret 18.10.05.

    Yderligere oplysninger om opdateringen til Access 2002 (KB904018) finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
    904018 Beskrivelse af opdateringen til Access 2002: 18. oktober 2005
  • Du har installeret et Access-runtime-program, der indeholder Microsoft Office 2003 Service Pack 2 (SP2), Access 2003-opdateringer, der blev udgivet efter Office 2003 SP2, eller opdateringen til Access 2002 (KB904018), der er dateret 18.10.05.
    Yderligere oplysninger om, hvordan Office-opdateringsfiler medtages i et Access-runtime-program, finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
    916176 Guiden bruger de runtime-filer, der findes i den udgivne version af Access, når du opretter en installationspakke for et program i Access 2003 eller Access 2002. Artiklen er evt. på engelsk.

Workaround

Du kan omgå denne forventede funktionsmåde med en af følgende metoder.

Metode 1: Brug Microsoft Excel

Åbn den sammenkædede Excel-projektmappe i Microsoft Excel, og foretag de ønskede ændringer i projektmappen. Når du har udført ændringerne, skal du gemme dem og lukke projektmappen.

Metode 2: Brug Office Access 2007, Access 2003 eller Access 2002

Importer den Excel-projektmappe, der er oprettet kæde til, i Access, og foretag derefter ændringerne af dataene. Når du har udført ændringerne, skal du eksportere dataene som en Excel .xls-fil.

Kør følgende programkode i Access for at eksportere tabellen fra Access til Excel.
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=<AccessSti>"
    'Note: In Office Access 2007, use the following line of code:
    'Db.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=<AccessPath>"
    SQL = "<MinForespørgsel>"
    CopyRecordSetToXL SQL, Db
    Db.Close
    MsgBox "Access har eksporteret data til Excel-filen.", vbInformation, "Eksport fuldført."
    Exit Sub
Leave:
        MsgBox Err.Description, vbCritical, "Fejl"
        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 = "<ExcelSti>"
    'Starter en ny session med COM-objektet Excel.exe.
    Set xlApp = New Excel.Application
    Set xlwbBook = xlApp.Workbooks.Open(stFile)
    Set xlwsSheet = xlwbBook.Worksheets("<Regneark>")
    xlwsSheet.Activate
    'Henter den første celle til datainput.
    xlwsSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
    y = xlApp.ActiveCell.Column - 1
    xlApp.ActiveCell.Offset(1, -y).Select
    x = xlwsSheet.Application.ActiveCell.Cells.Address
    'Åbner postsættet baseret på SQL-forespørgslen og gemmer data i Excel-regnearket.
    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 objfileExport = Nothing
    Set xlwbBook = Nothing
    Set xlApp = Nothing

End Sub
Bemærk! I denne eksempelkode skal du udskifte følgende pladsholdere:
  • <AccessSti>
  • <ExcelSti>
  • <MinForespørgsel>
    <MinForespørgsel> er pladsholder for den forespørgsel, som du kører mod tabellerne i Access-databasen. Resultatet af forespørgslen eksporteres til Excel-projektmappen.
  • <Regneark>
    <Regneark> er pladsholder for det Excel-regneark, du vil have resultatet eksporteret til.
Hvis du vil køre denne eksempelkode, skal du trykke på CTRL+G for at åbne vinduet Brugerudtryk, skrive Løsning og derefter trykke på ENTER.

Yderligere Information

På grund af juridiske problemer har Microsoft deaktiveret den funktionalitet i Access 2003 og Access 2002, der sætter brugere i stand til at ændre data i sammenkædede tabeller, der peger på et område i en Excel-projektmappe. Men, hvis du foretager ændringerne direkte i Excel-projektmappen, vises de i den sammenkædede tabel i Access.

Egenskaber

Artikel-id: 904953 - Seneste redigering: 21. februar 2007 - Redigering: 6.3
Oplysningerne i denne artikel gælder:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard
  • Microsoft Excel 2000 Standard
  • Microsoft Access 2002 Runtime
  • Microsoft Office Access 2003 Runtime
Nøgleord: 
kbexpertiseadvanced kbdatabase kbtshoot kbprb KB904953

Send feedback

 

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