Hallo zusammen,
anscheinend handelt es sich um einen bekannten Bug: Ich möchte über Excel auf ein verschlüsseltes Backend (Access 2010) zugreifen. Excel fragt auch über "Externe Daten" ganz richtig nach dem Passwort für das Backend. Allerdings erscheint das Fenster zur Passworteingabe erneut.
Ich habe einen Code im Netz gefunden (Danke an Bogdan!)
http://social.technet.microsoft.com/Forums/office/de-DE/2a8023b1-d964-4295-aeb8-27eb6cc7bcb8/kennwortgeschtzte-accessdatenbank-lsst-sich-nicht-in-excel-einbinden?forum=office_14de
Der Code fügt die Überschriften der Tabelle ein, bleibt aber dann in der Loop-Schleife mit der Fehlermeldung "3265: Element in dieser Auflistung nicht gefunden" hängen.
Debugger zeigt die Stelle "ActiveSheet.Cells(1, i).Value = RS.Fields(i).Name" als Fehler an. Habs irgendwie nicht gefixt bekommen.
Vielleicht hat ja jemand noch eine bessere Variante oder Idee?
Ein Export aus Access heraus würde ich gerne aus bestimmten umgehen.
Ich poste das hier, weil ich mit der Verschlüsselung des Access- Backends auf diverse Probleme gestossen bin. So lies sich das Front-End zunächst nicht mehr öffnen. Dies steht/stand im Zusammenhang mit der Tabelle "USysRibbons" für das Ribbon.
siehe http://support.microsoft.com/kb/926533.
Darauf wollte ich gerne hier im Forum mal hinweisen.
Vielen Dank für Eure Hilfe! :)
Viele Grüße!
Hallo,
ZitatDebugger zeigt die Stelle "ActiveSheet.Cells(1, i).Value = RS.Fields(i).Name"
... dann gibt es in deinem Recordset kein Feld mit der Nummer, die zu diesem Zeitpunkt die Variable 'i' als Wert enthält.
Auf Deutsch übersetzt soll der Befehl in der 1. Zeile des Arbeitsblattes in der
Spalte 10 den Wert eintragen, der
im 11. Feld des Recordsets steht (10 ist hier nur beispielhaft zu sehen)
11. Feld deshalb, weil die Auflistung von RS.Fields nicht bei 1 sondern bei 0 beginnt.
Versuch mal so:
ActiveSheet.Cells(1, i).Value = RS.Fields(i-1).Name
Hallo Peter!
Ich habe mich natürlich gleich dran gesetzt! Es funktioniert! Vielen herzlichen Dank! Und dank Deiner Erklärung habe ich es auch verstanden!
Ich möchte mich natürlich nicht mit fremden Federn schmücken, wenn ich den Code hier poste! Viele Grüße U. :D :D
Public Function GetDataFromAccess()
Dim acc As Object
Dim db As DAO.Database
Dim strDbName As String
Dim i As Integer
Dim j As Long
strDbName = "F:\Databases\ProtectedDB.accdb" 'Hier Pfad+Name des Backends
Set acc = CreateObject("Access.Application")
acc.Visible = False
'hier "test" ist das Kennwort
Set db = acc.DBEngine.OpenDatabase(strDbName, False, False, ";PWD=test")
acc.OpenCurrentDatabase strDbName
Dim RS As DAO.Recordset
Set RS = db.OpenRecordset("tbl_Bestellungen")
For i = 1 To RS.Fields.Count
ActiveSheet.Cells(1, i).Value = RS.Fields(i - 1).Name
Next i
j = 1
Do Until RS.EOF
j = j + 1
For i = 1 To RS.Fields.Count
ActiveSheet.Cells(j, i).Value = RS.Fields(i - 1).Value
Next i
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
db.Close
Set db = Nothing
acc.CloseCurrentDatabase
Set acc = Nothing
End Function