#1 3. April 2006 Zuletzt von einem Moderator bearbeitet: 15. April 2017 Hi, also eigentlich handelt es sich mehr um VBA als um VB aber vieleicht kann mir ja trozdem einer helfen. Ich muss für die Schule folgendes programmieren: per Knopfdruck sollen aus einer vorgegebenen Tabelle in MS Access alle Feldnamen ausgelesen werden und untereinander in einer neuen Excel-Arbeitsmappe aufgelistet werden. Dann sollen die die Inhalte der ersten Spalte aus der Access-Tabelle in der Excel-Tabelle nebeneinander aufgelistet werden und automatisch fett formatiert. Am besten ich mach mal n Bild davon ^^ {img-src: //imageshack.us/a/img138/497/problem5ey.gif} da ich aber n absoluter VB / VBA noob bin hoffe ich, dass mir jemand den code schreiben kann 10er ist für jede hilfe selbstverständlich + Multi-Zitat Zitieren
#2 4. April 2006 Mahlzeit Meister, bis wann musste das haben? Sind die Feldbezeichner die, die auch inder tatsächlichen Access-db vorhanden sind? Steht irgendwas da drin, ob ihr die DAO Objekt Bibliothek benutzen dürft oder nicht? Gruß Resus + Multi-Zitat Zitieren
#3 4. April 2006 naja Donnerstag sollte ich das haben, damit ichs Freitag fertig machen kann und dann abgeben, es dürfen alle Bibliotheken benutzt werden. + Multi-Zitat Zitieren
#4 4. April 2006 Ok, habs soweit fertig. Muss jetzt aber noch zu einer Vorlesung. Heute abend mach ich noch den Feinschliff und dann stell ich's hier rein. Habe ich denn jetzt alles richtig verstanden: Alle Daten aus einer Tabelle der Datenbank auslesen, quasi Zeilen und Spalten vertauschen und dann die erste Zeile fett, ja??! + Multi-Zitat Zitieren
#5 4. April 2006 jup hast alles richtig verstanden und big thx, hast mir das leben gerettet, 10er geht ja leider nit mehr :baby: aber wenn du im ICQ online kommst schreib mich mal an, dann hab ich ne andere "belohnung" für dich + Multi-Zitat Zitieren
#6 4. April 2006 So, ich glaube/hoffe das ich nix vergessen habe, müsste aber soweit alles sein: Code: Sub AccessToExcel(DBFullName As String, TableName As String) Dim db As Database, rs As Recordset Dim fld As Field Dim row As Long Dim col As Long row = 1 col = 1 Set nSheet = Sheets.Add(Type:=xlWorksheet) 'Neues Arbeitsblatt erstellen Set db = OpenDatabase(DBFullName) 'Datenbank öffnen Set rs = db.OpenRecordset(TableName, dbOpenSnapshot) 'RecordSet aus einer "Momentaufnahme" _ der gesamten Tabelle erstellen With rs If Not .BOF Then .MoveFirst 'Wenn Daten im Recordset vorhanden, dann gehe zum 1. Datensatz ' Erste Schleife: Auslesen und eintragen der Feldnamen For Each fld In .Fields nSheet.Cells(row, col) = fld.Name row = row + 1 Next fld col = col + 1 row = 1 While Not .EOF 'Solange noch datensätze vorhanden sind ' Zweite Schleife: Auslesen und eintragen der einzelnen Datensätze For Each fld In .Fields nSheet.Cells(row, col) = fld row = row + 1 Next fld col = col + 1 row = 1 .MoveNext Wend End With nSheet.Rows(1).Font.Bold = True 'Erste Zeile fett 'Aufräumen Set rs = Nothing db.Close Set db = Nothing End Sub Knallst dir einfach über die Steuerelement-Toolbox-Symbolleiste einen Button rein und rufst die Methode wie folgt auf: Code: AccessImportModule.AccessToExcel "C:\Ordner\db.mdb", "NameDerAccessTabelle" Die Tatsache mit den zwei Schleifen gefällt mir zwar nicht alzu gut, aber da die Daten spaltenweise in das Arbeitsblatt geschrieben werden viel mir da adhoc nichts besseres ein Solltest du einen Fehler bei z.b. "Dim db As Database" bekommen, dann muss du den Verweis zur Microsoft DAO Bibliothek noch setzen. Das kannst du im VB-Editor unter Extras->Verweise... und dort den haken bei "Microsoft DAO x.xx Object Library". Im Anhang auch nochmal der Code als fertige BAS-datei (darf ich nicht hochladen, also hab ich sie in txt umbenannt) So, falls noch irgendwas unklar oder fehlerhaft ist geb bescheid Gruß Resus + Multi-Zitat Zitieren