rindi Geschrieben 28. Januar 2002 Geschrieben 28. Januar 2002 Gentlefolks Ich habe da ne kleine Sorge. Vom Chef habe ich die Aufgabe bekommen, ein Excelformular zu erstellen welches automatisch aktualisiert wird. Nun, habe ich eine Tabelle in einer Arbeitsmappe. (Die Tabelle heisst „Softwareupdate“) Des weiteren habe ich einen Windowsordner mit weiteren Excel Dateien drin. Ich soll nun eine kleine VB Applikation schreiben, welche das automatisiert. Wenn ich die Tabelle Softwareupdate öffne, sollen mir sämtliche Dateinamen der Dateien in dem Ordner in die Tabelle Softwareupdate eingetragen werden. Wenn ich eine neue Excel Datei in diesen Windowsordner hinzufüge, soll diese auch in der Tabelle Softwareupdates erscheinen. Konkret. Wie „scane“ ich Windwosordner nach Dateien ab, und lasse mir die vorhandenen Dateinamen dieses Ordners in eine Excel –Tabelle schreiben? Des weitern sollen mir die in dem Ordner enthaltenen Excelfiles vom Inhalt her gecheckt werden. Wenn dort bestimmte Zelleneinträge vorhanden sind, sollen mir diese in der Tabellesoftwareupdate auch erscheinen. Jedes mal wenn die Tabelle Softwareupdates geöffnet wird, soll sie automatisch aktualisiert werden. (Oder ein aktualisierenbutton würd’s auch tun.) Wäre echt froh, wenn mir jemand einen geistreichen Tip geben könnte. Danke Grüsse rindi Zitieren
*I C Q* Geschrieben 28. Januar 2002 Geschrieben 28. Januar 2002 Hallo rindi, Original geschrieben von rindi Konkret. Wie „scane“ ich Windwosordner nach Dateien ab, und lasse mir die vorhandenen Dateinamen dieses Ordners in eine Excel –Tabelle schreiben? Des weitern sollen mir die in dem Ordner enthaltenen Excelfiles vom Inhalt her gecheckt werden. Hab Dir mal was zusammengestrickt, vielleicht hilfts ja: Sub xxtestx() Dim namen As String Dim reihe As Long Dim aktwbk As Workbook Dim pfad As String Dim aktsht As Worksheet Dim zelle As Range 'Hier den Pfad eintragen pfad = "C:\" 'aktuelle Reihe zum schreiben reihe = 1 'Durchsuche das Verzeichnis nach *.xls dateien namen = dir(pfad & "*.xls") Do While namen <> "" 'Name in die Zelle schreiben Cells(reihe, 1).Value = namen 'Als Workbook öffnen Set aktwbk = Workbooks.Open(pfad & namen) With aktwbk 'Jedes Tabellenblatt einzeln öffnen For Each aktsht In .Sheets 'Für jede Zelle in jedem Tabellenblatt prüfe auf "Suchbegriff" For Each zelle In aktsht.UsedRange If zelle.Value = "Suchbegriff" Then 'Wenn Suchbegriff gefunden dann schreibe 'in die Tabelle hinter den Dateinamen, dass er 'gefunden wurde Cells(reihe, 2).Value = "Suchbegriff gefunden!" End If Next Next 'Schliesse die Tabelle ohne zu speichern .Close xlDoNotSaveChanges End With 'zähle die Reihe eins hoch reihe = reihe + 1 'lese weiter im Verzeichnis namen = dir Loop End Sub Kannst ja mal Bescheid sagen, ob es das war, was Du brauchtest! CU, Red Bull Zitieren
rindi Geschrieben 1. Februar 2002 Autor Geschrieben 1. Februar 2002 Sali Red Bull Besten Dank für Deinen konstruktiven Beitrag. :-) Genau das habe ich gemeint! Nun liegt es in der Natur der Dinge, dass ich - wie bereits erwähnt - nicht der VB-Gott bin. Ich habe nun diesen von Dir "geposteten" Code direkt in's VB übernommen. Für mich verständlicherweise habe ich eine Schaltfläche, sprich button (btn_ausführen) kreirt; den Deinen Code dort eingefügt, und die entsprechenden Anpassungen daran vorgenommen. Als ich nun dass ganze starten/kompilieren wollte, kam mir die Meldung "expected End Sub". Komischerweise scheint diese Meldung in diesem Fall von unnatürlicher Natur zu sein. Das Endsub fehlt nirgens. Aber freilich, der Beruf des Informatikers scheint nicht zuletzt deswegen etwas herausforderndes zu sein. Selbstverständlich nochmals ein grosses Dankeschön für den Deinen Beitrag. Mit freundlichen Grüsse Rolf Rinderknecht Zitieren
rindi Geschrieben 1. Februar 2002 Autor Geschrieben 1. Februar 2002 So will ich den Code kompilieren. Sub Main() Private Sub btn_ausführen_Click() Sub xxtestx() Dim msexcel As Object Dim namen As String Dim reihe As Long Dim aktwbk As Workbook Dim pfad As String Dim aktsht As Worksheet Dim zelle As Range 'startet Excel Set msexcel = CreateObject("excel.application") 'Macht Excelfenster sichtbar msexcel.Visible = True 'Aktiviert Excelfenster msexcel.Documents.Add msexcel.Application.Activate 'Pfad zu den Exceldateien pfad = "C:\Dokumente und Einstellungen\rrinderknecht\Eigene Dateien\Softwareupdates\Software" 'aktuelle Reihe zum schreiben reihe = 1 'Durchsuche das Verzeichnis nach *.xls dateien namen = Dir(pfad & "*.xls") Do While namen <> "" 'Name in die Zelle schreiben Cells(reihe, 1).Value = namen 'Als Workbook öffnen Set aktwbk = Workbooks.Open(pfad & namen) With aktwbk 'Jedes Tabellenblatt einzeln öffnen For Each aktsht In .Sheets 'Für jede Zelle in jedem Tabellenblatt prüfe auf "Suchbegriff" For Each zelle In aktsht.UsedRange If zelle.Value = "Suchbegriff" Then 'Wenn Suchbegriff gefunden dann schreibe 'in die Tabelle hinter den Dateinamen, dass er 'gefunden wurde Cells(reihe, 2).Value = "Suchbegriff gefunden!" End If Next Next 'Schliesse die Tabelle ohne zu speichern .Close xlDoNotSaveChanges End With 'zähle die Reihe eins hoch reihe = reihe + 1 'lese weiter im Verzeichnis namen = Dir Loop End Sub End Sub End Sub Zitieren
Meenzer Geschrieben 1. Februar 2002 Geschrieben 1. Februar 2002 Hi! Du kannst keine Prozeduren ineinander verschachteln, so wie Du es gemacht hast. --------------------------------------------- Sub Main() Private Sub btn_ausführen_Click() Sub xxtestx() ........ ......... End Sub End Sub End Sub --------------------------------------------- Du musst jeden Prozedur einzelnd beenden. zB: Sub Main() End Sub ---------------- Private Sub btn_ausführen_Click() End Sub ---------------- Sub xxtestx() ........ ......... End Sub Gruss Zitieren
rindi Geschrieben 1. Februar 2002 Autor Geschrieben 1. Februar 2002 Alles klar, jetzt hab ich's soweit verstanden. Ich mag wohl tod nervig sein, trotzdem trübt es mich nicht weiter zu fragen. Wenn ich das nun soweit zusammen habe, meldet der Kompiler, sich mit einem Fehler. "USER-DEFINED TYPE NOT DEFINED". Ich habe versucht, mich diesbezüglich etwas schlau zu machen, und kam zum Ergebnis, dass ich noch irgendwelche (eine Art) Libarys einbinden muss; des weitern seien noch weitere Code Zeilen hinzuzufügen. Die Objekte "Woksheet" und "Workbook" müssen noch defniert werden. das ganze sieht nun wie folgt aus, wobei die Änderungen in den obersten Zeilen vorgenommen werden müssen. Sorry, für die Fragerei, bin aber eine totale VB-Null. Grüsse rindi Private Sub btn_generieren_Click() Dim objExcel As Object Set objExcel = CreateObject("Excel.Application") objExcel.Workbook.Add objExcel.Worksheet.Add Dim namen As String Dim reihe As Long Dim pfad As String Dim aktsht As Worksheet Dim aktwbk As Workbook Dim zelle As Range 'Pfad pfad = "C:\Dokumente und Einstellungen\rrinderknecht\Desktop\sw projekt\Software" 'aktuelle Reihe zum schreiben reihe = 1 'Durchsuche das Verzeichnis nach *.xls dateien namen = Dir(pfad & "*.xls") Do While namen <> "" 'Name in die Zelle schreiben cells(reihe, 1).Value = namen 'Als Workbook öffnen Set aktwbk = Workbooks.Open(pfad & namen) With aktwbk 'Jedes Tabellenblatt einzeln öffnen For Each aktsht In .Sheets 'Für jede Zelle in jedem Tabellenblatt prüfe auf "Suchbegriff" For Each zelle In aktsht.UsedRange If zelle.Value = "Suchbegriff" Then 'Wenn Suchbegriff gefunden dann schreibe 'in die Tabelle hinter den Dateinamen, dass er 'gefunden wurde cells(reihe, 2).Value = "Suchbegriff gefunden!" End If Next Next 'Schliesse die Tabelle ohne zu speichern .Close xlDoNotSaveChanges End With 'zähle die Reihe eins hoch reihe = reihe + 1 'lese weiter im Verzeichnis namen = Dir Loop End Sub Zitieren
*I C Q* Geschrieben 1. Februar 2002 Geschrieben 1. Februar 2002 Patsch *mitderHandvordenKopfschlag*! Ja, wenn ich genauer lesen würde, wäre ich schon eher drauf gekommen! Du versuchst ja, das ganze in einen reinen VB-Code zu packen. Das, was ich Dir da geschrieben habe, hab ich mit VBA unter Excel geschrieben. Das heisst jetzt für Dich, dass Du die Typen "Workbook", "Worksheet", usw. neu kreieren muss. Alternativ dazu, und vielleicht sogar noch besser, wäre es, die Excel-Library in dein Projekt einzubinden! Aber mal 'ne andere Frage: Warum willst Du das ganze unter VB machen. Mach Dir doch unter Excel ein Add-In, mit dem Du dann den Code ausführst. Informationen zum "Add-In"-Schreiben findest Du hier und in der Excel-Hilfe! CU, Red Bull Zitieren
rindi Geschrieben 1. Februar 2002 Autor Geschrieben 1. Februar 2002 Och nöd, jetzt beginnst auch noch mit der Strinpatscherei. Entschuldige Red Bull, ich geb ja zu in dieser Hinsicht etwas Begriffsstutzig zu sein. Okay, habe das jetzt in ein VBA Projekt eingefügt. Dumm nur, dass sich da überhaupt nichts regt, wenn ich die Schaltfläche zum ausführen dieses Codes betätige. Ich bin schlimm... :-( Anyway, mir ist wohl nicht mehr zu helfen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.