Automatische Benachrichtigung in Excel??

  • #1
H

Hellhammer

Bekanntes Mitglied
Themenersteller
Dabei seit
28.01.2002
Beiträge
431
Reaktionspunkte
0
Ort
Elmshorn
Hallo,

ich möchte gern, dass Excel mir nach Ablauf eines vorbestimmten Zeitraumes eine Benachrichtigung schickt, ist das möglich?

Z.B. eine Person Max Mustermann hat sich vor 8 Monaten zuletzt bei uns gemaldet.

In unserer Datenbank sind alle Kunden mit einer Kundennummer und einem Datum vermerkt.
Das Datum zeigt an, wann wir den letzten Kontakt hatten.

Danke
 
  • #2
Hallo Hellhammer,

ist die Datenbank Access oder eine Excel-Tabelle ?

Wenn es eine Excel-Tabelle ist:
- wie ist die Datumsspalte formatiert
- welche Spalte ist die Datums-Spalte
- welche Spalte ist die Namens-Spalte

Wie soll die Benachrichtigung denn aussehen ?
- email
- Netsend
-???

Wann sollen diese Ausgelöst werden und wodurch ?
Wiederanlauf, Makro ausführen, Timer ... ?

Was steht für SW zur Verfügung ? Welche Versionen ?

Gruß Matjes :)
 
  • #3
Es handelt sich um eine Excel Tabelle.

Datum: Spalte C und TT.MM.JJJJ
Name: Vorname ist Spalte E und der Nachname ist Spalte F

Die Kundennummer ist in Spalte A zu finden und sieht z.B. so W90-12 aus.
Das W für weiblich, 90 für das Geburtsjahr und 12 für die Anzahl der Personen mit dem gleichen Jahr und Geschlecht. W90.

Benachrichtigung: ist eigentlich egal, Netsend wäre aber schon nett.
Auslöser soll das Datum nach ca. 10 Monaten sein.

Es soll z.B. so lauten: Kunde W90-12 wurde vor 10 Monaten zuletzt kontaktiert!

SW..????

Danke
 
  • #4
Das ist schon sehr definitiv. :D

Jetzt fehlt noch die Antwort auf
Wann sollen diese Ausgelöst werden und wodurch ?
Wiederanlauf, Makro ausführen, Timer ... ?

Gruß Matjes :)
 
  • #5
Habe ich doch geschrieben.
Auslöser durch Datum.

Timer wäre wohl sinnvoll denke ich.
Also an die Systemuhr geknüpft.

Einfach ab dem Datum der letzten Aktualisierung 10 Monate weiter zählen.
Z.B. heute 01.11.05 eingetragen und am 01.09.06 dann eine Meldung das der Letzt Eintrag am 01.11.05 vorgenommen wurde. Also, bitte den Kunden kontaktieren!

Danke
 
  • #6
Hallo Hellhammer,

die Frage nach dem Auslöser ist natürlich 2-deutig. ;D

a) Auslöser, daß Excel die Untersuchung startet (Timer)
b) Auslöser, daß Excel Meldung sendet  (Datumsdifferenz > Schwellwert)

Für a) wäre ja auch eine Handlung, wie Excel am Morgen öffnen denkbar.

Gruß Matjes :)
 
  • #7
He he......

Sag mal, programmiert Du da etwas oder wie??
Wozu die ganzen Infos?

Auslöser A: excel soll natürlich immer dann danach suchen, wenn ich die Tabelle öffne.

Auslöser B: das Excel erkennt, das einer oder auch mehrere Einträge älter als 10 Monate sind.
Excel soll praktisch einfach nur das Datum das älter als 10 Monate ist erkennen.

Schwellwert??? ???
Hmmm.....also einfach nur ne Meldung schicken, dass würde mir reichen!
Vielleicht zwei Tage zuvor oder so. ;)
 
  • #8
Hallo Hellhammer ,

sorry, ich hatte es so verstanden, das das ablaufen sollte, ohne das du Excel von Hand öffnest.   :-\

Hier jetzt die Variante->Meldung beim Öffnen der Datei'.

Folgendes Vorgehen:

Makro in Modul:
1) deine Excel-Datei öffnen
2) VB-Ediotr öffnen Alt+F11
Links siehst Du ein Fenster mit der Überschrift Projekt-VBA-Project.
In diesem Fenster ist die Arbeitsmappe unter dem Namen VBAProject(Dateiname) zu finden.
3) VBAProject(Dateiname) selektieren
3) rechte Maustaste->Modul->Modul einfuegen
in der Mitte geht das Code-Fenster Dateiname - Modulx(Code) auf
4) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
Code:
Option Explicit
'****************************************************************
Function Excel_DatumUeberwachenMeldungZusammenstellen() As String

  
 ->### A N P A S S E N  ###################
  
 ->Definitionen zum zu untersuchenden Blatt
  Const c_BLATTTNAME = Tabelle1
  
  Const c_SP_KNR = 1     'Spalte A
  Const c_SP_DATUM = 3   'Spalte C
  Const c_SP_VORNAME = 5->Spalte E
  Const c_SP_NAME = 6   ->Spalte F

  Const c_Z_ERSTEWERTZEILE = 2
  
 ->Schwellwert Datum, vor dem gemeldet werden soll (ca. 10 Monate)
  Const c_SCHWELLWERT_ANZAHLTAGE = 300
  
 ->max. Meldungsanzahl
  Const c_MAXANZAHLMELDUNGEN = 30
  
 ->### A N P A S S E N  - E N D E #########
  
  Dim ws As Worksheet, l_rows As Long, x As Long
  Dim s_Mldg As String, l_Mldg_cnt As Long
  Dim d_Datum As Date, d_Datum_Schwellwert As Date, d_Datum_Heute As Date
  Dim s_Knr As String, s_Vorname As String, s_Name As String
  
  Set ws = Worksheets(c_BLATTTNAME)
  
 ->Anzahl relevanter Zeilen feststellen
  l_rows = ws.Cells(ws.Rows.Count, c_SP_DATUM).End(xlUp).Row
  
 ->Datum Schwellwert berechnen
  d_Datum_Heute = Format(Now(), dd.mm.yyyy)
  d_Datum_Schwellwert = d_Datum_Heute - c_SCHWELLWERT_ANZAHLTAGE
  
 ->Meldung initialisieren
  s_Mldg = : l_Mldg_cnt = 0
  
 ->alle relevanten Zeilen untersuchen
  For x = c_Z_ERSTEWERTZEILE To l_rows
    d_Datum = ws.Cells(x, c_SP_DATUM).Value
    If d_Datum < d_Datum_Schwellwert Then
      l_Mldg_cnt = l_Mldg_cnt + 1
     ->schon eine Meldung -> Linefeed anhängen
      If l_Mldg_cnt > 1 Then s_Mldg = s_Mldg & vbLf
      s_Knr = ws.Cells(x, c_SP_KNR).Value
      s_Name = ws.Cells(x, c_SP_NAME).Value
      s_Vorname = ws.Cells(x, c_SP_VORNAME).Value
      If d_Datum = 0 Then
        s_Mldg = s_Mldg & _
          Kunde  & s_Knr &  wurde nie kontaktiert!
      Else
        s_Mldg = s_Mldg & _
          Kunde  & s_Knr &  wurde vor  & (d_Datum_Heute - d_Datum) &  kontaktiert!
      End If
    End If
    If l_Mldg_cnt >= c_MAXANZAHLMELDUNGEN Then Exit For
  Next
  
  If l_Mldg_cnt = 0 Then
    Excel_DatumUeberwachenMeldungZusammenstellen = _
      Alle Kunden wurden in den letzten  & c_SCHWELLWERT_ANZAHLTAGE &  Tagen kontaktiert.
  Else
    Excel_DatumUeberwachenMeldungZusammenstellen = s_Mldg
  End If
  
AUFRAEUMEN:
  Set ws = Nothing
End Function
5) ggf. die Konstanten anpassen ( zwischen ANPASSEN und ANPASSEN ENDE)
(wichtig ist der Blattname und die erste Wertezeile)
6) speichern mit Strg+S


Open-Makro in Code-Seite von DieseArbeitsmappe
7) VBAProject(Dateiname)-> DieseArbeitsmappe doppelklicken
in der Mitte geht das Code-Fenster DieseArbeitsmappe  auf
8) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
Code:
Private Sub Workbook_Open()
  Dim s_Mldg As String
  
  On Error Resume Next
  s_Mldg = Excel_DatumUeberwachenMeldungZusammenstellen
  If s_Mldg =  Then
    MsgBox (Function->Excel_DatumUeberwachenMeldungZusammenstellen' nicht erreichbar.)
  Else
   ->Meldung ausgeben
    MsgBox s_Mldg
  End If
  On Error GoTo 0
End Sub
9) speichern mit Strg+S
10) VB-Editor schliessen mit Alt+Q

Jetzt kannst Du die Datei schliessen und wieder öffnen
Es sollte jetzt nach dem Öffnen eine Message-Box erscheinen.

Gruß Matjes :)
 
  • #9
Aaaaalter, was hast Du denn da gemacht????

Ist ja unglaublich!!!!
Das nenne ich Einsatz und Hingabe!

Ich werde mal versuchen es so zu machen wie Du es oben beschrieben hastm, ich hoffe es gelingt mir??
Also das mit dem öffnen muss nicht sein, ich dachte nur, es wäre anders nicht möglich.
Wenn die Meldungen erscheinen auch ohne die Datei zu öffnen, wäre es vermutlich sogar besser.

Herzlichen Dank Matjes, ich bin sprachlos.
 
  • #10
Hallo Hellhammer,

Du kannst folgendes am Schluß des Moduls einfügen
Code:
Sub Excel_DatumUeberwachenMeldung()
  Dim s_Mldg As String
  
  s_Mldg = Excel_DatumUeberwachenMeldungZusammenstellen
  
  MsgBox s_Mldg
End Sub

Dann unter Extra->Makro->Makros  Excel_DatumUeberwachenMeldung ausführen

Gruß Matjes :)
 
  • #11
Hi Matjes,

ich bin grad dabei das zu probieren, aber was ist denn mit Blattname und die erste Wertezeile gemeint?

Ich habe unten links noch weitere Reiter in der Tabelle, sind das Blätter?

Kann ich mit dem Code Daten verlieren?
Soll ich den eingetragenen Code durch den neuen ersetzen oder anhängen?

Ach ja, oben steht Blatttname mit 3 Ts, also ein T zuviel?

Danke
 
  • #12
  • #13
Ok, die Meldung poppt jetzt auf!
Sehr gut!!

Ist es möglich, neben dem Pop Up nicht nur OK zu sehen, sondern auch Drucken?
Die Liste mit 30 Meldungen kann ich mir nicht merken, deshalb muss ich sie ausdrucken.

Die Meldungen lauten jetzt:
Kunde W90-12 wurde vor 358 kontaktiert!

Leider wird auch der Kundenname nicht angezeigt, geht das?
 
  • #14
Hallo Hellhammer,

das Ganze jetzt nochmal überarbeitet und mit optionalem Drucken   ;)
Die manuelle Aufrufmöglichkeit per Excel_DatumUeberwachenMeldung ist auch enthalten.

Ich beschreibe hier nochmal, wie im Thread oben das Vorgehen.
Du müßtest den alten Code gegen den neuen austauschen, Blattname (jetzt mit 2 t  ;D ) und  ersteWertezeile anpassen.


Makro in Modul:
1) deine Excel-Datei öffnen
2) VB-Ediotr öffnen Alt+F11
Links siehst Du ein Fenster mit der Überschrift Projekt-VBA-Project.
In diesem Fenster ist die Arbeitsmappe unter dem Namen VBAProject(Dateiname) zu finden.
3) VBAProject(Dateiname) selektieren
3) rechte Maustaste->Modul->Modul einfuegen
in der Mitte geht das Code-Fenster Dateiname - Modulx(Code) auf
4) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
Code:
Option Explicit

Type myMldg_Structure
  s_Knr               As String
  s_Datum             As String
  s_Vorname           As String
  s_Name              As String
  l_KontaktVorAnzTage As Long
  s_Telefon1          As String
  s_Telefon2          As String
  s_Telefon3          As String
End Type

 ->### A N P A S S E N  ###################
  
 ->Definitionen zum zu untersuchenden Blatt
  Const c_BLATTNAME = Tabelle1
  
  Const c_SP_KNR = 1         ->Spalte A
  Const c_SP_DATUM = 3       ->Spalte C
  Const c_SP_VORNAME = 5     ->Spalte E
  Const c_SP_NAME = 6         'Spalte F
  Const c_SP_TELEFON1 = 10   ->Spalte J
  Const c_SP_TELEFON2 = 11   ->Spalte K
  Const c_SP_TELEFON3 = 13   ->Spalte M

  Const c_Z_ERSTEWERTZEILE = 2
  
 ->Schwellwert Datum, vor dem gemeldet werden soll (ca. 10 Monate)
  Const c_SCHWELLWERT_ANZAHLTAGE = 300
  
 ->### A N P A S S E N  - E N D E #########
  
 ->max. Meldungsanzahl
  Const c_MAXANZAHLMELDUNGEN = 12

 ->Meldungsfeld
  Global f_Mldg() As myMldg_Structure, f_Mldg_cnt As Long


'****************************************************************
Sub Excel_DatumUeberwachenMeldung()
  
  If Not Excel_DatumUeberwachenMeldungZusammenstellen Then
    MsgBox (Fehler bei der Meldungszusammenstellung.)
    GoTo AUFRAEUMEN
  End If
  
  If Not Excel_DatumUeberwachenMeldungAusgeben Then
    MsgBox (Fehler bei der Meldungsausgabe.)
    GoTo AUFRAEUMEN
  End If
  
AUFRAEUMEN:
End Sub
'****************************************************************
Private Function Excel_DatumUeberwachenMeldungDrucken() As Boolean
  
  Const c_DrSP_Knr = 1
  Const c_DrSP_Vorname = 2
  Const c_DrSP_Name = 3
  Const c_DrSP_Datum = 4
  Const c_DrSP_VorAnzTg = 5
  Const c_DrSP_Telefon1 = 6
  Const c_DrSP_Telefon2 = 7
  Const c_DrSP_Telefon3 = 8
  
  Const c_DrSP_AnzahlSpalten = 8
  
  Dim l_zeile As Long, x As Long
  Dim wb As Workbook, ws As Worksheet, r As Range
  
  Excel_DatumUeberwachenMeldungDrucken = False
  
  Application.ScreenUpdating = False
  
 ->temporäre Mappe anlegen
  Set wb = Workbooks.Add
  Set ws = wb.Worksheets(1)
  
 ->Zellen als Text formatieren, Ausrichtung links,oben
  With ws.Range(Cells(1, 1), Cells(f_Mldg_cnt + 1, c_DrSP_AnzahlSpalten))
    .NumberFormat = @
    .VerticalAlignment = xlVAlignTop
    .HorizontalAlignment = xlHAlignLeft
    With .Borders(xlEdgeLeft):         .LineStyle = xlContinuous: .Weight = xlThin: End With
    With .Borders(xlEdgeTop):          .LineStyle = xlContinuous: .Weight = xlThin: End With
    With .Borders(xlEdgeBottom):       .LineStyle = xlContinuous: .Weight = xlThin: End With
    With .Borders(xlEdgeRight):        .LineStyle = xlContinuous: .Weight = xlThin: End With
    With .Borders(xlInsideVertical):   .LineStyle = xlContinuous: .Weight = xlThin: End With
    With .Borders(xlInsideHorizontal): .LineStyle = xlContinuous: .Weight = xlThin: End With
  End With
  
  l_zeile = 1
 ->Überschriften
  With ws.Cells(l_zeile, c_DrSP_Knr): .Value = KNr: .Font.Bold = True: End With
  With ws.Cells(l_zeile, c_DrSP_Vorname): .Value = Vorname: .Font.Bold = True: End With
  With ws.Cells(l_zeile, c_DrSP_Name): .Value = Name: .Font.Bold = True: End With
  With ws.Cells(l_zeile, c_DrSP_Datum): .Value = letzter Kontakt: .Font.Bold = True: End With
  With ws.Cells(l_zeile, c_DrSP_VorAnzTg): .Value = Kontakt vor Anz. Tagen: .Font.Bold = True: End With
  With ws.Cells(l_zeile, c_DrSP_Telefon1): .Value = Telefon 1: .Font.Bold = True: End With
  With ws.Cells(l_zeile, c_DrSP_Telefon2): .Value = Telefon 2: .Font.Bold = True: End With
  With ws.Cells(l_zeile, c_DrSP_Telefon3): .Value = Telefon 3: .Font.Bold = True: End With
  
 ->Werte ausgeben
  For x = 1 To f_Mldg_cnt
    l_zeile = l_zeile + 1
    ws.Cells(l_zeile, c_DrSP_Knr).Value = f_Mldg(x).s_Knr
    ws.Cells(l_zeile, c_DrSP_Vorname).Value = f_Mldg(x).s_Vorname
    ws.Cells(l_zeile, c_DrSP_Name).Value = f_Mldg(x).s_Name
    ws.Cells(l_zeile, c_DrSP_Datum).Value = f_Mldg(x).s_Datum
    If f_Mldg(x).s_Datum =  Then
      ws.Cells(l_zeile, c_DrSP_VorAnzTg).Value = nie
    Else
      ws.Cells(l_zeile, c_DrSP_VorAnzTg).Value = f_Mldg(x).l_KontaktVorAnzTage
    End If
    ws.Cells(l_zeile, c_DrSP_Telefon1).Value = f_Mldg(x).s_Telefon1
    ws.Cells(l_zeile, c_DrSP_Telefon2).Value = f_Mldg(x).s_Telefon2
    ws.Cells(l_zeile, c_DrSP_Telefon3).Value = f_Mldg(x).s_Telefon3
  Next
  
 ->Spaltenbreite optimieren
  For x = 1 To ws.UsedRange.Columns.Count: ws.Columns(x).AutoFit: Next
  
  With ws.PageSetup
   ->Seitenformat - Querformat
    .Orientation = xlLandscape
   ->Ausgabe 1 Seite breit
    .Zoom = False: .FitToPagesWide = 1: .FitToPagesTall = 9999
   ->Seitenüberschrift
    .CenterHeader = &Arial,Fett&12 & zu kontaktierende Kunden
    .RightHeader = &9&D, &T->Datum
    .CenterFooter = &9&P/&N->Seite / Seiten
  End With
  
  Application.ScreenUpdating = True
  
 ->Ausdrucken
 ->ws.UsedRange.PrintOut
 ->für Test
  ws.UsedRange.PrintOut Preview:=True
  
 ->temporäre Datei schliessen ohne Speichern
  wb.Close savechanges:=False
  
 ->Rückgabekennung
  Excel_DatumUeberwachenMeldungDrucken = True
AUFRAEUMEN:
  Set ws = Nothing: Set wb = Nothing
End Function
  
Private Function Excel_DatumUeberwachenMeldungAusgeben() As Boolean
  
  Dim s_Mldg As String, s_Kunde As String, x As Long, ret As Integer, s_Telefon As String
  
  Excel_DatumUeberwachenMeldungAusgeben = False
  
 ->Nichts zu melden ?
  If f_Mldg_cnt = 0 Then
    MsgBox ( _
      Alle Kunden wurden in den letzten  & c_SCHWELLWERT_ANZAHLTAGE &  Tagen kontaktiert.)
      Excel_DatumUeberwachenMeldungAusgeben = True
      GoTo AUFRAEUMEN
  End If
  
 ->Meldung zusammenstellen
  s_Mldg = 
  For x = 1 To f_Mldg_cnt
    If x > 1 Then s_Mldg = s_Mldg & vbLf->nächste Zeile
   ->Telefonnummern-String aufbereiten
    s_Telefon = TelefonnummernAusgabestring(x)
   ->Kunde aufbereiten
    s_Kunde = Kunde  & f_Mldg(x).s_Knr & ( & f_Mldg(x).s_Vorname & ,  & f_Mldg(x).s_Name & )
    If f_Mldg(x).s_Datum =  Then
      s_Mldg = s_Mldg & s_Kunde &  wurde nie kontaktiert! & s_Telefon
    Else
      s_Mldg = s_Mldg & _
                s_Kunde &  wurde vor  & f_Mldg(x).l_KontaktVorAnzTage &  Tagen kontaktiert! & _
                s_Telefon
    End If
   ->maximale Anzahl Meldungen für Msgbox erreicht ?
    If x = c_MAXANZAHLMELDUNGEN Then
      If f_Mldg_cnt > c_MAXANZAHLMELDUNGEN Then
        s_Mldg = s_Mldg & vbLf & vbLf & _
                  nicht ausgegeben Meldungen:  & (f_Mldg_cnt - c_MAXANZAHLMELDUNGEN)
        Exit For
      End If
    End If
  Next
  
  ret = MsgBox( _
          s_Mldg & vbLf & vbLf & Soll das gedruckt werden ?, _
          vbDefaultButton1 + vbYesNo)

  If ret = vbYes Then
    If Not Excel_DatumUeberwachenMeldungDrucken Then
      MsgBox (Fehler bei Meldung drucken.)
      GoTo AUFRAEUMEN
    End If
  End If

  Excel_DatumUeberwachenMeldungAusgeben = True
AUFRAEUMEN:
End Function
  
'****************************************************************
Private Function Excel_DatumUeberwachenMeldungZusammenstellen() As Boolean
'***
'*** Stellt die zu meldenden Kundendaten im Meldungsfeld zusammen
'***
  
  
  Dim ws As Worksheet, l_rows As Long, x As Long
  Dim d_Datum As Date, d_Datum_Schwellwert As Date, d_Datum_Heute As Date
  
  Excel_DatumUeberwachenMeldungZusammenstellen = False
  
 ->Meldungsfeld Initialisieren
  f_Mldg_cnt = 0
  ReDim f_Mldg(1 To 1)
  
  On Error Resume Next
  
  Set ws = Worksheets(c_BLATTNAME)
  If Err.Number <> 0 Then
    Err.Clear
    MsgBox (Blatt-> & c_BLATTNAME &-> ist nicht vorhanden.)
    GoTo AUFRAEUMEN
  End If
  
 ->Anzahl relevanter Zeilen feststellen
  l_rows = ws.Cells(ws.Rows.Count, c_SP_DATUM).End(xlUp).Row
  
 ->Datum Schwellwert berechnen
  d_Datum_Heute = Format(Now(), dd.mm.yyyy)
  d_Datum_Schwellwert = d_Datum_Heute - c_SCHWELLWERT_ANZAHLTAGE
  
  
 ->alle relevanten Zeilen untersuchen
  For x = c_Z_ERSTEWERTZEILE To l_rows
    d_Datum = ws.Cells(x, c_SP_DATUM).Value
    If d_Datum < d_Datum_Schwellwert Then
     ->Werte des Kunden in Meldungsfeld
      f_Mldg_cnt = f_Mldg_cnt + 1
      ReDim Preserve f_Mldg(1 To f_Mldg_cnt)
      With f_Mldg(f_Mldg_cnt)
        .s_Datum = ws.Cells(x, c_SP_DATUM).Value
        .l_KontaktVorAnzTage = (d_Datum_Heute - d_Datum)
        .s_Knr = ws.Cells(x, c_SP_KNR).Value
        .s_Name = ws.Cells(x, c_SP_NAME).Value
        .s_Vorname = ws.Cells(x, c_SP_VORNAME).Value
        .s_Telefon1 = ws.Cells(x, c_SP_TELEFON1).Value
        .s_Telefon2 = ws.Cells(x, c_SP_TELEFON2).Value
        .s_Telefon3 = ws.Cells(x, c_SP_TELEFON3).Value
      End With
    End If
  Next
  
 ->Rückgabekennung ok setzen
  Excel_DatumUeberwachenMeldungZusammenstellen = True
  
AUFRAEUMEN:
  Set ws = Nothing
  On Error GoTo 0
End Function
'****************************************************************
Private Function TelefonnummernAusgabestring(l_ind As Long) As String
    
  Dim f() As String, f_cnt As Long, s_Tel As String, x As Long
    
  f_cnt = 0: ReDim f(1 To 1)
  
  If f_Mldg(l_ind).s_Telefon1 <>  Then
    f_cnt = f_cnt + 1: ReDim Preserve f(1 To f_cnt)
    f(f_cnt) = f_Mldg(l_ind).s_Telefon1
  End If
  If f_Mldg(l_ind).s_Telefon2 <>  Then
    f_cnt = f_cnt + 1: ReDim Preserve f(1 To f_cnt)
    f(f_cnt) = f_Mldg(l_ind).s_Telefon2
  End If
  If f_Mldg(l_ind).s_Telefon3 <>  Then
    f_cnt = f_cnt + 1: ReDim Preserve f(1 To f_cnt)
    f(f_cnt) = f_Mldg(l_ind).s_Telefon3
  End If

  s_Tel =  ( Telefon: 
  
  If f_cnt = 0 Then
    s_Tel = s_Tel & keine Angabe 
  Else
    s_Tel = s_Tel & f(1) &  
    For x = 2 To f_cnt:  s_Tel = s_Tel & oder  & f(x) &  : Next
  End If
  
  s_Tel = s_Tel & ) 
  
  TelefonnummernAusgabestring = s_Tel
End Function
5) ggf. die Konstanten anpassen ( zwischen ANPASSEN und ANPASSEN ENDE)
(wichtig ist der Blattname und die erste Wertezeile)
6) speichern mit Strg+S


Open-Makro in Code-Seite von DieseArbeitsmappe


7) VBAProject(Dateiname)-> DieseArbeitsmappe doppelklicken
in der Mitte geht das Code-Fenster DieseArbeitsmappe  auf
8 ) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
Code:
Private Sub Workbook_Open()
  
  On Error Resume Next
  
  Call Excel_DatumUeberwachenMeldung
  If Err.Number Then
    Err.Clear
    MsgBox (Function->Excel_DatumUeberwachenMeldung' nicht erreichbar.)
  End If
  
  On Error GoTo 0
  
End Sub
9) speichern mit Strg+S
10) VB-Editor schliessen mit Alt+Q

Jetzt kannst Du die Datei schliessen und wieder öffnen
Es sollte jetzt nach dem Öffnen eine Message-Box erscheinen.
Wenn Du die Nachfrage mit Ja beantwortest, erfolgt der Ausdruck auf dem Standarddrucker.

Gruß Matjes :)
 
  • #15
Junge, Junge....Du bist echt der Hammer!! :eek: :D
Bist Du ne Maschine oder was? ;)

Ha ha ha........echt genial!!! ::)

Herzlichen Dank mein Freund..... :)
 
  • #16
:D Danke für die Blumen  :D
 
  • #17
Klappt soweit sehr gut!!

Leider muss ich das jetzt für jede neue Tabelle einbauen, kann man das auch als Standard aktivieren?
Ich mache immer Sicherungen von der Datenbank und speichere alle paar Tage unter unter anderem Namen ab. Der Inhalt bleibt aber gleich, bis auf neu hinzu gekommende Kunden.

Kann ich nach dem Drucken zurück in die Datenbank ohne die Tabelle neu starten zu müssen?

Am Anfang erscheint ein Hinweis ob Macros aktiviert werden sollen, kann ich den Hinweis ausblenden und ihm vorher sagen, dass die immer aktiv sein sollen?

Ach jaaaaaaaaaa....ich müsste die Telefonnummer noch angezeigt bekommen, die befinden sich in der Zeile J, K und M.

Danke
 
  • #18
Hallo Hellhammer,

Ach jaaaaaaaaaa....ich müsste die Telefonnummer noch angezeigt bekommen, die befinden sich in der Zeile J, K und M.
Hab es im Thread oben erweitert.  ;)

Am Anfang erscheint ein Hinweis ob Macros aktiviert werden sollen, kann ich den Hinweis ausblenden und ihm vorher sagen, dass die immer aktiv sein sollen?
schau aml unter

Leider muss ich das jetzt für jede neue Tabelle einbauen, kann man das auch als Standard aktivieren?
Ich mache immer Sicherungen von der Datenbank und speichere alle paar Tage unter unter anderem Namen ab. Der Inhalt bleibt aber gleich, bis auf neu hinzu gekommende Kunden.
Ist das ein direkter Export aus der Datenbank im Excel-Format ? Oder sind da noch Zwischenschritte?

Kann ich nach dem Drucken zurück in die Datenbank ohne die Tabelle neu starten zu müssen?
Das versteh ich nicht. Beschreib mal, was da passiert.

Gruß Matjes :)
 
  • #19
Ok, seehr schön!

Ich gehe auf speichern unter und dann z.B. auf den Desktop. Dort lagere ich die älteren Dateien um sie später weiter zu bearbeiten.
Also ein direktes Speichern im XLS Format.


Wenn ich auf Ja klicke, dann bekomme ich alle Kunden in der Excel Tabelle angezeigt, die vorher im Pop Up angezeigt wurden, keine anderen!!
Wenn ich auf Ja klicke, kommt immer zuvor ne Meldung: Funktion Excel_DatumUeberwachenMeldungnicht erreichbar
Wenn die dann mit OK bestätige, wird die folgende Seite aber angezeigt, was ist das?

Im letzten Eintrag im Pop Up ist leider die Telefonnummer nicht zu erkennen, die ist abgeschnitten, kann man dem Eintrag meht Luft geben?

Ich würde aber nach dem Ausdruck gern zurück in die gesamte Tabelle, also mit allen Kunden, geht das ohne die Tabelle erneut neu öffnen zu müssen?
Hat sich erledigt, die normale Tabelle erscheint in der Taskleiste!!

Gruß
 
  • #20
Hallo Hellhammer,

im Modul ist noch die Einstellung zum testen:
Code:
 ->Ausdrucken
 ->ws.UsedRange.PrintOut
 ->für Test
  ws.UsedRange.PrintOut Preview:=True
Wenn du die in
Code:
 ->Ausdrucken
  ws.UsedRange.PrintOut
 ->für Test
 ->ws.UsedRange.PrintOut Preview:=True
änderst, wird nicht mehr die Seitenvorschau des Ausdrucks angezeigt.

Ist mir durch die Lappen gegangen  :-[

Gruß Matjes :)
 
Thema:

Automatische Benachrichtigung in Excel??

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben