Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
400to404
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

### Verzeichnis prüfen ###

### Verzeichnis prüfen ###
SABINE
Hallo VBA’s
Gibt es eine Möglichkeit, wie ich z.b. alle 5 Minuten ein Verzeichnis Abfrage
Und wenn ein Datei im Ver. eingeht, der Name in die Tabelle eingetragen wird.
Zusätzlich wäre es super, wenn der o.g Vorgang abgeschlossen ist automatisch
Eine Email versendet wird.
Über eine Lösung würde ich mich sehr freuen.
Liebe Grüsse
Sabine
AW: ### Verzeichnis prüfen ###
Nepumuk
Hallo Sabine,
alles kein Problem, aber ein paar Fragen sind noch offen.
1. Ist das immer das selbe Verzeichnis, oder kann sich das ändern?
2. Ist das Verzeichnis zu Beginn leer oder sind da schon Dateien drin? Wenn schon welche drin sind, sollen die auch aufgelistet werden?
3. Was soll aufgelistet werden? Nur der Name der Datei oder der Name mit dem kompletten Pfad?
4. Wo soll aufgelistet werden? (Tabellenname ab Zeile in Spalte)
5. Wie soll der Vorgang abgeschlossen werden? Manuell oder automatisch?
6. Welches E-Mailprogramm wird verwendet?
Gruß
Nepumuk
Anzeige
AW: ### Verzeichnis prüfen ###
SABINE
Hallo Nepumuk
1. das Ver. bleibt immer gleich!
2. das Ver. ist am Anfang leer!
3. es wäre schön, wenn in Spalte "A" der Name der Datei steht,(eventuell auch mit Link auf die Datei) und in Spalte "B" wann die Datei reingestellt wurde Date+Uhr
5. Der Vorgang sollte automatisch abgeschlossen werden.
6. Outlook.
Ich danke Dir schon mal im Voraus für deine Unterstützung.
LG Sabine
AW: ### Verzeichnis prüfen ###
Nepumuk
Hallo Sabine,
zu 1. Kannst du mir das Verzeichnis verraten, damit ich es gleich richtig einbaue?
zu 3. Hyperlink zur Datei um diese zu öffnen?
zu 5. Was ist das Abbruchkriterium? (z.B. Uhrzeit)
Gruß
Nepumuk
Anzeige
AW: ### Verzeichnis prüfen ###
SABINE
Hallo Nepumuk,
zu1. E:\Daten\IMP
zu2. Ja eine Hyperlink zu dieser Datei.
zu5. keins ( oder was könnte es noch sein?)
LG Sabine
AW: ### Verzeichnis prüfen ###
SABINE
Habe ich ganz vergessen.
die Dateien, sllen im ver. gelistet werde.
erklärung.
In das ver laufen Datensätze rein, die lier gelistet werden.
folglich sollte die Exceltabelle immer erweitert werde, ach wenn die Datensätze gelöcht werden.
Also eine Übersicht über alle eingegangenen Datensätze.
LG Sabine
AW: ### Verzeichnis prüfen ###
Nepumuk
Hallo Sabine,
ich bin mir etwas unsicher wegen deines Nachsatzes. Kann es denn vorkommen, dass in dem Verzeichnis dann doch ateien über mehrere Tage drin bleiben? Dann werden sie nämlich mit der momentanen Version des Programms mehrfach gelistet.
Option Explicit Dim bolStop As Boolean Dim intDateianzahl As Integer Dim strDateien() As String Dim datStopzeit As Date Const strTabelle As String = "Tabelle1" Public Sub start() Dim varEingabe As Variant Do varEingabe = InputBox("Bitte die Uhrzeit eingeben, an der das Programm beendet werden soll.", "Uhrzeiteingabe", Time + TimeSerial(8, 0, 0)) If varEingabe = False Then Exit Sub If IsDate(varEingabe) And InStr(1, varEingabe, ":") <> 0 Then Exit Do MsgBox "Keine gültige Uhrzeit.", 48, "Hinweis" Loop datStopzeit = CDate(varEingabe) Protokoll End Sub Public Sub Protokoll() Dim bolgefunden As Boolean Dim intIndex1 As Integer, intIndex2 As Integer, intZeile As Integer Dim myFile As Object, myFileSystemObject As Object Set myFileSystemObject = CreateObject("Scripting.FileSystemObject") If Worksheets(strTabelle).Cells(1, 1) <> "" Then intZeile = Worksheets(strTabelle).Cells(65536, 1).End(xlUp).Row With Application.FileSearch .LookIn = "E:\Daten\IMP" .FileType = msoFileTypeAllFiles If .Execute > intDateianzahl Then intDateianzahl = .FoundFiles.Count ReDim Preserve strDateien(1 To intDateianzahl) For intIndex1 = 1 To .FoundFiles.Count bolgefunden = False For intIndex2 = 1 To UBound(strDateien) If strDateien(intIndex2) = .FoundFiles(intIndex1) Then bolgefunden = True: Exit For If strDateien(intIndex2) = "" Then strDateien(intIndex2) = .FoundFiles(intIndex1) intZeile = intZeile + 1 Set myFile = myFileSystemObject.GetFile(.FoundFiles(intIndex1)) Worksheets(strTabelle).Hyperlinks.Add Anchor:=Cells(intZeile, 1), Address:=.FoundFiles(intIndex1), ScreenTip:=myFile.Name, TextToDisplay:=myFile.Name Worksheets(strTabelle).Cells(intZeile, 2) = Now Worksheets(strTabelle).Columns.AutoFit Exit For End If Next Next End If End With Set myFile = Nothing Set myFileSystemObject = Nothing If Time < datStopzeit Then Application.OnTime (Time + TimeSerial(0, 0, 5)), "Protokoll" Else Absenden End Sub Public Sub beenden() datStopzeit = Time bolStop = True End Sub Public Sub Absenden() If bolStop Then If MsgBox("Protokolldatei versenden?", 36, "Abfrage") = 7 Then Exit Sub Worksheets(strTabelle).Copy ActiveSheet.Shapes.SelectAll Selection.Delete ActiveWorkbook.SendMail "DeinEmpfaenger@keineAhnung.de", "Protokolldatei von " & Date ActiveWorkbook.Close SaveChanges:=False ThisWorkbook.Close SaveChanges:=True End Sub
Du musst noch den Tabellennamen und den Emailempfänger anpassen.
Gruß
Nepumuk
Anzeige
AW: ### Verzeichnis prüfen ###
SABINE
Hallo Nepumuk,
vorab erst einmal vielen Dank, für die klasse Lösung.
Ich werde es jetzt erst einmal testen, vielleicht funktioniert es ja auf anhieb.
Viele liebe Grüsse
Sabine.
PS. wenn ich noch mal eine Frage an Dich habe, kann ich Dich dann irgendwie erreichen?
AW: ### Verzeichnis prüfen ###
Nepumuk
Hallo Sabine,
der Beitrag wird noch ein paar Tage im Forum bleiben. Ich schau ab und an mal vorbei. Ansonsten findest du meine Mailadresse in den Profilen.
Gruß
Nepumuk
AW: ### Verzeichnis prüfen ###
SABINE
Hallo Nepumuk,
ich möchte Dir jetzt mal genau beschreiben was ich machen möchte.
Wir haben ein Verzeichnis, in das von Extern Kunden Daten reingestellt werden.
#Jetzt ist ja das Prolem, wenn man nich permanent den Rechner prüft, ob Daten eingegangen sind, dass man es nicht mitbekommt.
Ich möchte also auf diesem Rechner permanent eine Excel Tabelle mitlaufen lassen, um erstens zu protokolieren, und zweitens eine Meldung zu generieren die Informiert.
Das bedeutet also, dass die Excel Datei immer geöffnet ist.
Das Verzeichnis E:\Daten\imp wird natürlich von Zeit zu Zeit aufgeräumt.
Die Datensatze in der Exceltabellte sollen jedoch erhalten bleiben und nicht doppelt aufgeführt werden.
Das ganze sollte natürlich vollautomatisch ablaufen, deswegen die Abfrage des Ver.
alle 5Minuten erfolgen.
Bei Eingang von Daten, sollte selbstständig eine Email versenden werden, ohne Bestätigung.
#Ich würde mich sehr freuen, wenn Du mir bei der Umsetzung behilflich wärst.
Liebe Grüsse Sabine
Anzeige
AW: ### Verzeichnis prüfen ###
Nepumuk
Hallo Sabine,
ich würde das anders machen. Es kann nämlich zu Problemen kommen, wenn du an diesem Rechner mit anderen Exceltabellen arbeitest und das Programm mittendrin losläuft. Ich kann dir mit VB eine .EXE schreiben, die die Überwachung übernimmt. Wenn diese eine neue Datei findet, öffnet sie die Tabelle im Hintergrund, trägt die Daten ein und generiert die Mail. Davon würdes du kaum etwas merken, und könntest ungestört mit dem Rechner arbeiten. Da ich dazu aber noch mehrere Angaben von dir benötige, wäre es gut, wenn du mir eine Email schreibst (kaffl-nuernberg@t-online.de).
Gruß
Nepumuk
Anzeige
AW: ### Verzeichnis prüfen ###
Oberschlumpf
Hallo Sabine
Ja, Nepumuk hat schon Recht. Es sind wirklich noch ein paar Fragen offen.
Trotzdem hab ich mal versucht, eine Lösung zu erstellen.
Aber...weil...Fragen offen ;-)...
Vorausetzung:
1. Alle Dateien müssen im selben Ordner sein
2. Ich habe Outlook als Mailprogramm verwendet
3. Die Einträge befinden sich in Spalte A ab Zelle A1
So, vielleicht hilft Dir ja mein Vorschlag, wenn Du es Deinen Bedürfnissen angepasst hast. Handelt sich um VBA. Ohne VBA ist so etwas wohl nicht möglich.
Hier der Code:


Sub FileSuche()
    Dim Zeile As Integer, Mailtext As String
    Dim Datei As String
    Dim ol, mail As Object
    
    'Bildschirmaktualisierung wird deaktiviert
    Application.ScreenUpdating = False
    
    Zeile = 1
    
    'in Spalte A wird die erste leere Zeile ermittelt; davon ausgegangen, dass keine leerenZeilen zwischen den Einträgen bestehen
        Do Until Range("A" & Zeile).Value = ""
            Zeile = Zeile + 1
        Loop
        
    'hier wird der Bereich gelöscht mit den schon vorhandenen Einträgen (Dateinamen); beginnend von A1 bis vorher ermittelte leere Zelle
    Range("A1:A" & Zeile).Value = ""
    
    'hier wird im Verzeichnis C:\ nach allen ZIP-Dateien gesucht; musst Du anpassen
    Datei = Dir("C:\*.zip")
    
    Zeile = 1
    
    'es wird, beginnend in A1 jeder Dateiname der gefundenen ZIP-Dateien eingetragen
        Do Until Datei = ""
            Range("A" & Zeile).Value = Datei
            
            'hier wird die Liste für die Mail generiert
            Mailtext = Mailtext & Range("A" & Zeile).Value & vbCrLf
            
            Datei = Dir
            Zeile = Zeile + 1
        Loop
    
    'hier wird
    Set ol = CreateObject("Outlook.Application")
    Set mail = ol.CreateItem(0)
    
    'die Betreffzeile
    mail.Subject = "test"
    
    'erster Empfänger
    mail.To = "DeinEmpfaenger@keineAhnung.de"
    
    'wenn gewünscht, weitere Empfänger
    mail.cc = "DeinEmpfaenger@keineAhnung.de;DeinEmpfaenger@keineAhnung.de"
    
    'wenn gewünscht, die Empfänger in mail.bcc sind nicht sichtbar für die anderen Empfänger
    mail.bcc = "DeinEmpfaenger@keineAhnung.de"
    
    'mail.body ist der Bereich, in dem Du normalerweise Deinen Text schreibst. Hier wird die Dateiliste eingefügt
    mail.body = Mailtext
    
    'diese Zeile kannst Du löschen, wenn alles funktioniert. mail.display zeigt die erstellte Mail nur an, und versendet sie nicht
    mail.display
    
    'diese Zeile solltest Du erst aktivieren (das Hochkomma löschen), wenn alles funktioniert. mail.send verschickt JEDE auch noch fehlerhafte mail an die eingetragenen Empfänger :-)
    'mail.send
    
    'hier wird genau das eben durchgeführte Makro in 5 Minuten wiederholt
    Application.OnTime Now + TimeValue("00:05:00"), "filesuche"
    
    'Bildschirmaktualisierung wird aktiviert
    Application.ScreenUpdating = True
End Sub


Du musst diesen Code komplett in ein allgemeines Modul im VBA-Editor (Alt + F11) einfügen.
Danach kannst Du es in Excel über Extras/Makro/Makros auswählen.
Viel Erfolg :-)
Hoffe, dass ich helfen konnte.
Ciao
Thorsten
Anzeige
AW: ### Verzeichnis prüfen ###
Oberschlumpf
Hi Sabine
Hab etwas vergessen.
Um diese 5-Minuten-Wiederholung wieder auszuschalten, solltest Du so vorgehen:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime Now + TimeValue("00:05:00"), "filesuche", Schedule:=False
End Sub

Dieses Modul (...BeforeClose...) findest Du, wenn Du im VBA-Editor links auf "DieseArbeitspappe" doppelt klickst und dann rechts oben Workbook und
daneben BeforeClose auswählst.
Ciao
Thorsten
AW: ### Verzeichnis prüfen ###
SABINE
Hallo Thorsten,
vielen Dank für Deine Lösung, ich werde Sie mal durchtesten.
Liebe Grüsse Sabine
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige