collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 42
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13810
  • stats Beiträge insgesamt: 64294
  • stats Themen insgesamt: 8693
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Gefilterter Datensats auf Formular soll in Exces exportiert werden.  (Gelesen 85 mal)

Offline Andreas_80

  • Newbie
  • Beiträge: 21
Hallo zusammen,

habe mich grade durch die Suche gearbeitet, leider konnte ich daraus nicht schlau werden.
Mein Problem ist das ich ein VBA Code habe mit dem ich in einem Formular, basierend auf einer Abfrage,
Datensätze filtern kann.
Klappt auch super. Nun will ich den gefilterten Datensatz per "Export"-Schaltfläche exportieren.

Hier ist mal mein zusammenkopierter Code hahah
Ich glaube das der gefilterte Datensatz in eine Variable oder Objekt gespeichert werden soll damit die Exportfunktion den Wert von dort aus übernimmt. Ich weiß aber nicht wie :-([/color
Hoffe mir kann jemand helfen und es wird nicht all zu kompliziert :-)

Option Compare Database

Private Sub Form_Load()
    Me.txtVorname.SetFocus
End Sub

Private Sub cmdExport_Click()
 Me.Requery
    On Error GoTo Err_cmdExport_Click
    Dim stDocName As String

    stDocName = "abf_Schnellsuche"
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, stDocName, "C:\Users\buss\Desktop\test.xls", True
    MsgBox "Die Datei wurde als Excel-Datei unter C:\Users\buss\Desktop\test.xls gespeichert!!!"
Exit_cmdExport_Click:
    Exit Sub
Err_cmdExport_Click:
    MsgBox Err.Description
    Resume Exit_cmdExport_Click
End Sub

Private Sub cmdZurückHM_Click()
    DoCmd.Close
    DoCmd.OpenForm "frm_Menü"
End Sub

Private Sub FilterSetzen()
 Dim ctl           As Control
 Dim strFilter     As String
 Dim intkeyascii As Integer
' aktuelles Suchfeld in Variable einlesen
 Set ctl = Me.ActiveControl
' Sonderbehandlung von Leerzeichen (Zeichen Nr. 32)
 If intkeyascii = 32 Then
   ctl = ctl & Chr(32)
'   Initialisierung der Variablen
   intkeyascii = 0
 End If
' strFilter aus den Suchfeldern zusammenstellen (nach System von Reinhard Kraasch)
' Filter bei Nachname, Vorname und Straße nach Like x*, bei Telefon Filter nach Like *x*
' Wenn der Fokus auf dem Suchfeld ist, wird die Text-Eigenschaft abgefragt, ansonsten die Value-Eigenschaft.
 If ctl.Name = "txtNachname" Then
   If Len(Me!txtNachname.Text & vbNullString) > 0 Then strFilter = strFilter & " AND Nachname Like '" & Me!txtNachname.Text & "*'"
 Else
   If Not IsNull(Me!txtNachname.Value) Then strFilter = strFilter & " AND Nachname Like '" & Me!txtNachname.Value & "*'"
 End If

 If ctl.Name = "txtVorname" Then
   If Len(Me!txtVorname.Text & vbNullString) > 0 Then strFilter = strFilter & " AND Vorname Like '" & Me!txtVorname.Text & "*'"
 Else
   If Not IsNull(Me!txtVorname.Value) Then strFilter = strFilter & " AND Vorname Like '" & Me!txtVorname.Value & "*'"
 End If

 If ctl.Name = "txtStraße" Then
   If Len(Me!txtStraße.Text & vbNullString) > 0 Then strFilter = strFilter & " AND Straße Like '" & Me!txtStraße.Text & "*'"
 Else
   If Not IsNull(Me!txtStraße.Value) Then strFilter = strFilter & " AND Straße Like '" & Me!txtStraße.Value & "*'"
 End If

 If ctl.Name = "txtOrt" Then
   If Len(Me!txtOrt.Text & vbNullString) > 0 Then strFilter = strFilter & " AND Ort Like '" & Me!txtOrt.Text & "*'"
 Else
   If Not IsNull(Me!txtOrt.Value) Then strFilter = strFilter & " AND Ort Like '" & Me!txtOrt.Value & "*'"
 End If

 If ctl.Name = "txtPLZ" Then
   If Len(Me!txtPLZ.Text & vbNullString) > 0 Then strFilter = strFilter & " AND PLZ Like '*" & Me!txtPLZ.Text & "*'"
 Else
   If Not IsNull(Me!txtPLZ.Value) Then strFilter = strFilter & " AND PLZ Like '*" & Me!txtPLZ.Value & "*'"
 End If

 If ctl.Name = "txtIdentNr" Then
   If Len(Me!txtIdentNr.Text & vbNullString) > 0 Then strFilter = strFilter & " AND IdentNr Like '*" & Me!txtIdentNr.Text & "*'"
 Else
   If Not IsNull(Me!txtIdentNr.Value) Then strFilter = strFilter & " AND IdentNr Like '*" & Me!txtIdentNr.Value & "*'"
 End If

 If ctl.Name = "txtSteuerNr" Then
   If Len(Me!txtSteuerNr.Text & vbNullString) > 0 Then strFilter = strFilter & " AND SteuerNr Like '*" & Me!SteuerNr.Text & "*'"
 Else
   If Not IsNull(Me!txtSteuerNr.Value) Then strFilter = strFilter & " AND SteuerNr Like '*" & Me!txtSteuerNr.Value & "*'"
 End If

 If ctl.Name = "txtKNR" Then
   If Len(Me!txtKNR.Text & vbNullString) > 0 Then strFilter = strFilter & " AND KNR Like '*" & Me!txtKNR.Text & "*'"
 Else
   If Not IsNull(Me!txtKNR.Value) Then strFilter = strFilter & " AND KNR Like '*" & Me!txtKNR.Value & "*'"
 End If

 If ctl.Name = "txtSVNr" Then
   If Len(Me!txtSVNr.Text & vbNullString) > 0 Then strFilter = strFilter & " AND SVNr Like '*" & Me!txtSVNr.Text & "*'"
 Else
   If Not IsNull(Me!txtSVNr.Value) Then strFilter = strFilter & " AND SVNr Like '*" & Me!txtSVNr.Value & "*'"
 End If

 'Die ersten 5 Zeichen des strFilter abschneiden
 strFilter = Mid(strFilter, 6)
 'Filter setzen
 Me.Filter = strFilter
 Me.FilterOn = True
 'Bei leerem Suchfeld geht der Fokus verloren, daher wieder setzen
 ctl.SetFocus
 'Cursor ans Ende des eingegeben Textes setzen (nach DonKarl FAQ 4.24)
 ctl.SelStart = Len("" & ctl)
 'Speicher freigeben
 Set ctl = Nothing
End Sub

Private Sub txtIdentNr_Change()
    Call FilterSetzen
End Sub

Private Sub txtKNR_Change()
    Call FilterSetzen
End Sub

Private Sub txtNachname_Change()
    Call FilterSetzen
End Sub

Private Sub txtOrt_Change()
    Call FilterSetzen
End Sub

Private Sub txtPLZ_Change()
    Call FilterSetzen
End Sub

Private Sub txtSteuerNr_Change()
    Call FilterSetzen
End Sub

Private Sub txtStraße_Change()
    Call FilterSetzen
End Sub

Private Sub txtSVNr_Change()
    Call FilterSetzen
End Sub

Private Sub txtVorname_Change()
    Call FilterSetzen
End Sub
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23147
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #1 am: Januar 15, 2018, 13:20:46 »
Hallo,

mit

DoCmd.OutputTo acOutputForm, Me.Name, acFormatXLS, "c:\Temp\Test.xls"

werden die im Form gefilterten Datensätze in eine Excel-Datei exportiert.

Offline Andreas_80

  • Newbie
  • Beiträge: 21
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #2 am: Januar 15, 2018, 13:58:01 »
Danke DF6GL,

soweit fuktioniert es auch. Allerdings nimmt Me.Name die Textfeldbezeichnung und die Spaltenbezeichnung.
Und exportiert diese. Siehe Anhang
Die Textfelder "txtVorname etc" sollten nicht mit exportiert werden. :-)
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23147
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #3 am: Januar 15, 2018, 14:06:29 »
Hallo,

naja, von diesen Sonderwünschen hast Du nicht erwähnt.

Es bleibt dann nur, eine Abfrage dynamisch zusammen zu stellen , die die nötigen Felder (evtl. mit Aliasnamen) selektiert und mit dem Filterkriterium des Forms als Where-Condition  (bzw. die Parameters-Section der Abfrage zu nutzen)  die gewünschten DS aus der Tabelle filtert.

Diese Abfrage kann dann mit Transferspreadsheet in eine xls-Datei exportiert werden.

Offline Andreas_80

  • Newbie
  • Beiträge: 21
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #4 am: Januar 15, 2018, 14:36:16 »
ooookay,
dann versuch ich mich mal damit. Danke dir.