Thema Datum  Von Nutzer Rating
Antwort
Rot VBA-Access: Gruppen von Datensätzen aus Access nach Excel
16.06.2014 15:45:11 VBALaerner
NotSolved

Ansicht des Beitrags:
Von:
VBALaerner
Datum:
16.06.2014 15:45:11
Views:
2059
Rating: Antwort:
  Ja
Thema:
VBA-Access: Gruppen von Datensätzen aus Access nach Excel

Hallo Leute,

ich habe vor kurzem einen Access-VBA-Grundkurs mitgemacht und bin noch ein Grünschnabel. Dennoch habe ich es schon mal geschafft, Tabellen von Excel nach Access einzulesen und umgekehrt. Nun habe ich aber das Problem, dass ich aus den vielen Datensätzen, bestimmte Datensätze herausfiltern muss und die dann in eine vorgefertigte Excel-Datei einlesen muss.

Zum besseren Verständnis: Es gibt 5 Verkaufsleiter, denen sind 10 Verkäufer untergeordnet (Zahlen sind fiktiv). Nun muss ich aus den vielen Datensätzen ermitteln, welche Verkaufsleiter betroffen sind und dann für jeden einzelnen Verkaufsleiter die Datensätze herausfiltern und in diese vorbereitete Excel-Datei einlesen.

Die Ermittlung der VLGr (Verkaufsleiter) denke ich, ist mir geglückt. Wie ich Daten von Access in eine Excel-Datei rüberbringe, habe ich schon erstellt. Leider fehlt mir jetzt irgendwie der Zwischenschritt, dass er den ersten Verkaufsleiter (VLGr) ermittelt... zum Beispiel VLGr 1, diese Daten dann nach Excel (zwei verschiedene Tabellen) überträgt und dann weitermacht mit dem nächsten ermittelten Verkaufsleiter.

Hoffe, ich habe mein Problem nachvollziehbar erklären können. Wäre Euch sehr dankbar, wenn ihr mir da rüberhelfen könntet   :-)))

 

Hier mein Versuch mit Kommentaren....

'Abfrage nach VLGr
Dim strSQLopen As String
Dim strSQLCreate As String
Dim lngVLGr As Long
Dim rsVLgr As ADODB.Recordset

Sub ListenAusgabenachExcelmitVerteilung()
'Excel starten und per Variable in Zugriff nehmen

 

'VLGr auswählen
strSQLopen = "SELECT fürExcelVerteilungVL.VLGr FROM fürExcelVerteilungVL GROUP BY fürExcelVerteilungVL.VLGr HAVING (((fürExcelVerteilungVL.VLGr) Between 1 And 5));"
Set rsVLgr = New ADODB.Recordset
rsVLgr.Open strSQLopen, CurrentProject.Connection, adOpenDynamic, adLockOptimistic

'Schleife durch alle Datensätze
Do Until rsVLgr.EOF
    'Zusammenstellen eines SQL-Statements zum Eintrag in neue Excel-Tabelle
    Debug.Print "SELECT FROM fürExcelVerteilungVL where [VLGr] =" & rsVLgr![VLGr]
 
 
 
 rsVLgr.MoveNext
   
Loop
 

Hier fehlt mir dann der Verbindungsweg, wie ich diese beiden Programme ineinanderlaufen lassen kann.

 

Das ist das Programm für die Übertragung nach Excel (mit eigener Erläuterung)....

 

Sub ListenAusgabenachExcelohneVerteilung()
'Excel starten und per Variable in Zugriff nehmen
Set appExcel = CreateObject("Excel.Application")

'Excel sichtbar machen
appExcel.Visible = True

'Eine bestehende Exceldatei öffnen
strDateiName = "L:\VorlageTest.xlsx"
Set Datei = appExcel.Workbooks.Open(strDateiName, , True)

'das Tabellenblatt in der Zieldatei ansprechen
Set TabelleINKNBL = Datei.Sheets("Vorlage")

'Schreibzeile für Excel voreinstellen
Zeilenermittlung = 2

'das Recordset, aus dem übertragen wird, vorbereiten und öffnen
Set Datenübertragung = New ADODB.Recordset
Datenübertragung.Open "fürExcelVerteilungVL", CurrentProject.Connection, adOpenDynamic, adLockOptimistic

'Schleife bis zum Ende des Recordsets, um alle Datensätze zu übertragen
Do Until Datenübertragung.EOF
    For i = 0 To Datenübertragung.Fields.Count - 1
    TabelleINKNBL.Cells(Zeilenermittlung, i + 1) = Datenübertragung.Fields(i)
    Next i
    Zeilenermittlung = Zeilenermittlung + 1
    Datenübertragung.MoveNext
Loop
   
'das Tabellenblatt in der Zieldatei ansprechen
Set TabelleGesprächsbedarf = Datei.Sheets("Gesprächsbedarf")

'Schreibzeile für Excel voreinstellen
ZeilenermittlungGesprächsbedarf = 2
   
'das Recordset, aus dem übertragen wird, vorbereiten und öffnen (Gesprächsbedarf)
Set DatenübertragungGesprächsbedarf = New ADODB.Recordset
DatenübertragungGesprächsbedarf.Open "abfGesprächsbedarfEnd", CurrentProject.Connection, adOpenDynamic, adLockOptimistic

'Schleife bis zum Ende des Recordsets, um alle Datensätze zu übertragen (Gesprächsbedarf)
Do Until DatenübertragungGesprächsbedarf.EOF
    For i = 0 To DatenübertragungGesprächsbedarf.Fields.Count - 1
    TabelleGesprächsbedarf.Cells(ZeilenermittlungGesprächsbedarf, i + 1) = DatenübertragungGesprächsbedarf.Fields(i)
    Next i
    ZeilenermittlungGesprächsbedarf = ZeilenermittlungGesprächsbedarf + 1
    DatenübertragungGesprächsbedarf.MoveNext
Loop
   
   
       
    'Erstellen Listendatum aus Abfrage "fürListe" zum Verwenden in Dateinamensgebung
    Dim rcsDatum As Recordset, datDatumNeu, datDatumAlt As Date
   
    Set rcsDatum = CurrentDb.OpenRecordset("fürListe")
    'datDatumAlt = rcsDatum.Fields("Listevom").Value
    datDatumNeu = Format(rcsDatum.Fields("Listevom").Value, "YYYY_MM_DD")

 

'Datei speichern
strDateiName = "L:\" & datDatumNeu & " _Verkäufer.xlsx"
Datei.SaveAs strDateiName, xlOpenXMLWorkbook

'Recordset schliessen
Datenübertragung.Close

'Excel-Datei wieder schliessen
Datei.Close

'Excel unbedingt schliessen!!!!
appExcel.Quit
Set appExcel = Nothing

End Sub

 

 

 

     


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA-Access: Gruppen von Datensätzen aus Access nach Excel
16.06.2014 15:45:11 VBALaerner
NotSolved