Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Einzelne Adressen aus Access importieren
27.07.2006 14:55:59
Boris
Hallo
noch ein Neuer und direkt ne dumme Frage;-)
Meine Holde muss ofters Rechnungen schreiben. Am einfachsten ist das ja nunmal mit Excel. Ich hab zwar ein Programm daß nur dafür gemacht ist, aber das will sie nicht nutzen(wieso auch immer)
Den Kundenstamm würde ich ihr gerne in eine Access-DB unterbringen. Jetzt muss ich nur noch möglichst einfach diese Kunden in das "Rechnungs- Sheet" importieren. Natürlich sollte sie sich diesen Kunden am besten per klick aussuchen können. Aber Name sollte auch funktionieren. Dieser soll dann wie gesagt in die Rechnung importiert werden. Und zwar so:
Name Vorname
Strasse
Plz Ort
Diesen Code hab ich schon bekommen und versucht meinen Wünschen anzupassen. Allerdigs schreibt er dei Daten nicht so in das Sheet wie ich es gerne hätte.
Excel ist bis jetzt mein Sorgenkind, und VBA in Excel auch nicht meine Stärke.
Könnte mir mal einer auf die Sprünge helfen wie ich das hinbekomme?

Sub Schaltfläche1_BeiKlick()
' Achtung der Verweis auf: Microsoft ActiveX Data Objects 2.0 Library
' oder eine höhere Version (2.1, 2.5) muss aktiviert sein.
' Hier soll eine Access-Datenbank, die passwortgeschützt ist gelesen werden.
' Achtung: Die Namen in Access dürfen keinen Bindestrich, sondern immer
' den Unterstrich als Text-Trennung enthalten - z. B. PSTLZ_Straße.
Dim Connect As Connection ' die Verbindung zu Access
Dim RecSet As Recordset ' der Access RecordSet
Dim SQLString As String ' der SQL Befehl
Dim Ziel As Worksheet ' Excel-Tabellenblatt
Dim Zeile As Integer ' Zeile
Dim Spalte As Integer ' Spalte
Dim DBPfad As String ' Pfad der Access-Anwendung
Dim DBDatei As String ' Name der Access-Datei bzw. DB
Dim DBTab As String ' Name der Access-Tabelle
Dim Suchbegr As String ' String als Suchbegriff
DBPfad = "E:\"
DBDatei = "Kunden.mdb"
DBTab = "Kunden"
Set Ziel = Worksheets("Rechnung") ' Ziel Tabellenblatt in Excel
' Die Datenbank öffnen
Set Connect = New ADODB.Connection
With Connect ' für Access 2000 und höhere '~~~~~~~~~~~~~~~~
.Provider = "Microsoft.Jet.OLEDB.4.0" + ";Jet OLEDB:Database Password=welcome"
.ConnectionString = "Data Source=" & DBPfad & DBDatei '~~~~~~~~~~~~~~~~
.Open
End With
' im SQL-String definieren was geholt werden soll => hier verschiedene Varianten
' hier alles - die komplette Access-Tabelle
'SQLString = "SELECT Adressen.* FROM Adressen" ' <-- Hier die Datenbanktabelle
SQLString = "SELECT " & DBTab & _
".* FROM " & DBTab & "" ' <-- Hier die Datenbanktabelle
If SQLString = "" Then
MsgBox "hier ist der Wurm drin, der SQLString ist leer - Abbruch.", _
16, " der SQLString wurde nicht gefüllt."
Exit Sub
Else
'MsgBox SQLString ' den SQL-String anzeigen
End If
Set RecSet = New ADODB.Recordset
RecSet.Open SQLString, Connect, adOpenDynamic, adLockReadOnly
Cells.ClearContents ' den alten Inhalt löschen
'Call Kopf_entfaerben ' die alten Kopfzeilen entfernen
Application.ScreenUpdating = False
' Die Feldnamen der Datenbanktabelle in die erste Zeile des
' Excel Ziel-Tabellenblattes schreiben
For Spalte = 0 To RecSet.Fields.Count - 1
Ziel.Cells(5, Zeile + 1) = RecSet.Fields.Item(Spalte).Name
Next Spalte
'Call Kopf_farbig(RecSet.Fields.Count) ' die neuen Kopfzeilen farbig, fett
' Jetzt alle selektierten Sätze holen und in das Excel-Tabellenblatt schreiben
Zeile = 1
If RecSet.EOF = False Then ' kein EOF => es gibt also Daten !
RecSet.MoveFirst ' auf dem ersten Datensatz aufsetzen
Else
MsgBox "es konnte nichts selektiert werden => Abbruch.", _
16, " fehlerhafte Selektion ?"
Exit Sub
End If
Do While RecSet.EOF = False
Zeile = Zeile + 1
For Spalte = 0 To RecSet.Fields.Count - 1
If IsNull(RecSet.Fields.Item(Spalte).Value) = False Then
Ziel.Cells(Zeile, Spalte + 1) = RecSet.Fields.Item(Spalte).Value
Ziel.Rows(Zeile & ":" & Zeile).RowHeight = 13.2
End If
Next Spalte
RecSet.MoveNext
Loop
Cells.EntireColumn.AutoFit
[A1].Select
Application.ScreenUpdating = True
RecSet.Close
Connect.Close
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einzelne Adressen aus Access importieren
27.07.2006 15:56:16
Peter
Hallo Boris,
ich habe mir ein UserForm erstellt, in das ich die Kunden-Nummer eingeben kann, dann wird gesucht und als Adresse ausgegeben.
Option Explicit
'
'------------------------------------------------------------------------------'
' '
' Autor: Peter Feustel - p.feustel@system-kontor.de '
' '
'------------------------------------------------------------------------------'
' '
' Achtung der Verweis auf: Microsoft ActiveX Data Objects 2.0 Library '
' oder eine höhere Version (2.1, 2.5) muss aktiviert sein. '
' '
' das nachfolgende Makro liest aus einer Access-Datenbank Adressen '
' gemäß der Adressen-Nummer und gibt die Adressen anschließend in '
' ein Tabellenblatt der Excel-Mappe aus. '
' Verwendet wird hierzu eine UserForm(ular) TextBox, in die die Nummern '
' einzeln eingetragen werden können. '
' Es können nur Zahlen erfasst werden, alles andere wird abgelehnt. '
' '
'------------------------------------------------------------------------------'
'
Public

Sub Adressen_Suchen(Suchbegr As Integer)
Dim DBPfad     As String      ' Pfad der Access-Anwendung
Dim DBDatei    As String      ' Name der Access-Datei bzw. DB
Dim DBTab      As String      ' Name der Access-Tabelle
Dim Ziel       As Worksheet   ' Excel-Tabellenblatt
Dim Connect    As Connection  ' die Verbindung zu Access
Dim RecSet     As Recordset   ' der Access RecordSet
Dim SQLString  As String      ' der SQL Befehl
'  Pfad der Access Datenbank, Name der Access Datei, Name der Access Tabelle
DBPfad = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Access-DBs\"
DBDatei = "Adr-Feustel.mdb"
DBTab = "Adressen"
Set Ziel = Worksheets("Tabelle6")   ' Ziel Tabellenblatt in Excel
'  Die Datenbank öffnen
Set Connect = New ADODB.Connection
With Connect
.Provider = "Microsoft.Jet.OLEDB.4.0"   ' für Access 2000 und höhere
.ConnectionString = "Data Source=" & DBPfad & DBDatei
.Open
End With
'  hier nur ein paar Felder gemäß Suchbegiff aus der Access-Tabelle holen
SQLString = "SELECT " & DBTab & ".Vorname, " _
& DBTab & ".Nachname, " _
& DBTab & ".Namensergänzung, " _
& DBTab & ".Straße, " _
& DBTab & ".Länderschlüssel, " _
& DBTab & ".PSTLZ_Straße, " _
& DBTab & ".Ort, " _
& DBTab & ".Ortszusatz, " _
& DBTab & ".Region " _
& " FROM " & DBTab _
& " WHERE " _
& DBTab & ".Adressen_Nr = " & Suchbegr & ";"
If SQLString = "" Then
MsgBox "hier ist der Wurm drin, der SQLString ist leer - Abbruch.", _
16, "   der SQLString wurde nicht gefüllt."
Exit Sub
Else
'MsgBox SQLString      ' den SQL-String anzeigen
End If
Set RecSet = New ADODB.Recordset
RecSet.Open SQLString, Connect, adOpenDynamic, adLockReadOnly
Range("B12:B16").ClearContents     ' den alten Inhalt löschen
Call Kopf_entfaerben               ' die alten Kopfzeilen entfernen
Application.ScreenUpdating = False ' kein Bildschirm-Update
'  Jetzt den selektierten Record holen und in das Excel-Tabellenblatt schreiben
If RecSet.EOF = False Then  ' kein EOF => es gibt also Daten !
RecSet.MoveFirst         ' auf dem ersten Datensatz aufsetzen
Else
MsgBox "es konnte nichts selektiert werden => Abbruch.", _
16, "    fehlerhafte Selektion ?"
Exit Sub
End If
If Not RecSet.Fields.Item(0).Value = "" Then ' Vorname eingetragen ?
Range("B12").Value = RecSet.Fields.Item(0).Value & " " & _
RecSet.Fields.Item(1).Value
Else
Range("B12").Value = RecSet.Fields.Item(1).Value
End If
If Not RecSet.Fields.Item(2).Value = "" Then ' Namenszusatz eingetragen ?
Range("B13").Value = RecSet.Fields.Item(2).Value ' Namenszusatz
Range("B14").Value = RecSet.Fields.Item(3).Value ' Straße
If RecSet.Fields.Item(4).Value <> "DE" Then ' Land nicht DEutschland ?
Range("B16").Value = RecSet.Fields.Item(4).Value & "-" & _
RecSet.Fields.Item(5).Value & " " & _
RecSet.Fields.Item(6).Value & " " & _
RecSet.Fields.Item(7).Value
If RecSet.Fields.Item(4).Value = "IT" Then ' Italien ?
Range("B16").Value = Range("B16").Value & " (" & _
RecSet.Fields.Item(8).Value & ")"    ' Region anhängen
End If
Else
Range("B16").Value = RecSet.Fields.Item(5).Value & " " & _
RecSet.Fields.Item(6).Value & " " & _
RecSet.Fields.Item(7).Value
End If
Else
Range("B13").Value = RecSet.Fields.Item(3).Value
If RecSet.Fields.Item(4).Value <> "DE" Then ' Land nicht DEutschland ?
Range("B15").Value = RecSet.Fields.Item(4).Value & "-" & _
RecSet.Fields.Item(5).Value & " " & _
RecSet.Fields.Item(6).Value & " " & _
RecSet.Fields.Item(7).Value
If RecSet.Fields.Item(4).Value = "IT" Then ' Italien ?
Range("B15").Value = Range("B15").Value & " (" & _
RecSet.Fields.Item(8).Value & ")"    ' Region anhängen
End If
Else
Range("B15").Value = RecSet.Fields.Item(5).Value & " " & _
RecSet.Fields.Item(6).Value & " " & _
RecSet.Fields.Item(7).Value
Range("B16").Value = ""
End If
End If
Cells.EntireColumn.AutoFit        ' Zellen auf optimale Breite setzen
Application.ScreenUpdating = True ' Bildschirm-Update wieder zulassen
RecSet.Close     ' Access Recordset schließen
Connect.Close    ' Access schließen
Unload UserForm1
End Sub

Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: Einzelne Adressen aus Access importieren
27.07.2006 16:23:53
Boris
Danke schonmal!
Ich guck heute abend mal ob ich es damit hinbekomme.
Im schlimmsten Fall werd ich dich/ euch nochmal belästigen.
AW: Einzelne Adressen aus Access importieren
27.07.2006 17:23:59
Peter
Hallo Boris,
ich habe mir eine Access Datenbank mit Namen Kunden, darin eine Tabelle mit Namen Kunden angelegt und die sieht so aus:
Nummer AutoWert
Name Text
Vorname Text
Strasse Text
Postlz Text
Ort Text
damit läuft die beigefügte Mappe.
Du muss noch DBPFAD anpassen und ggf. deine Feldnamen in der DB_Tabelle.
https://www.herber.de/bbs/user/35399.xls
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: zwei Varianten zur Auswahl
27.07.2006 18:18:15
Peter
Hallo Boris,
hier kannst du zwischen Kunden-Nummer und Kunden-Namen wählen.
https://www.herber.de/bbs/user/35403.xls
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: zwei Varianten zur Auswahl
28.07.2006 08:47:56
Boris
Hey Danke!!! Wie kann ich das jemals wieder gut machen?
AW: zwei Varianten zur Auswahl
28.07.2006 09:47:39
Peter
Hallo Boris,
freu Dich (freut Euch), wenn es funktioniert und Ihr damit arbeiten könnt.
Ein schönes, warmes WE.
Viele Grüße Peter
AW: zwei Varianten zur Auswahl
28.07.2006 10:28:59
Boris
Wünsch ich dir auch.
Hmmmm.... meine Stärken liegen mehr in der Bild und Videobearbeitung und Access.
Also wenn du da mal was brauchst meld dich;-)
Anzeige
AW: zwei Varianten zur Auswahl
28.07.2006 15:12:23
Peter
Hallo Boris,
nur noch als Nachtrag: Ihr könnt die Kunden auch mit Joker suchen. Mül% sollte Müller liefern, dazu also das Prozentzeichen verwenden.
Viele Grüße Peter

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige