An MRR, oder wer mir noch helfen kann!!!

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox


Excel-Version: 2002
nach unten

Betrifft: An MRR, oder wer mir noch helfen kann!!!
von: Sabrina
Geschrieben am: 25.04.2002 - 11:59:34

Hi!
Du hast mir bei folgendem PRoblem geholfen (MRR):

So sieht ein kleiner Teil meines Programmes aus:
'Const File = "\\mvxz9s01\Sysvol\wwz0sm.rootdom.net\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\*.inf"
'Application.ScreenUpdating = False
'Set Paper = Sheet4
'On Error Resume Next
'Workbooks.OpenText File, Other:=True, OtherChar:="="
''Cells.Copy Paper.Range("A1")
'ActiveWorkbook.Close SaveChanges:=False
'Application.ScreenUpdating = True
Dieser Teil soll aus einem Verzeichnis eine *.inf-Datei heraussuchen und in das Excel-Sheet schreiben, so funktioniert es auch, jetzt möchte ich aber das die Suche nach der *.inf Datei ab dem Verzeichnis Policies beginnt, da dann in verschiedenen Unterverzeichnissen *.inf-Dateien enthalten sind!
Wer kann mir helfen!
Nur bitte keine neuen Methoden, ich muss die oben gezeigte Methode benutzen!
Bei weiteren Fragen sende ich auch gerne mein ganzen Skript zu!

Du gabst mir folgende Lösung die auch funktioniert hat:

Hi Sabrina,
versuch's mal wie folgt:

Sub Alle_Auf()
Dim Datei As FileSearch
Dim i As Integer
Const File = "\\mvxz9s01\Sysvol\wwz0sm.rootdom.net\Policies"
Application.ScreenUpdating = False
Set Paper = Sheet4
On Error Resume Next
Set Datei = Application.FileSearch
With Datei
.FileName = "*.inf"
.LookIn = File
.SearchSubFolders = True
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.OpenText .FoundFiles(i), Other:=True, OtherChar:="="
Cells.Copy Paper.Range("A1")
ActiveWorkbook.Close SaveChanges:=False
Next
End If
End With
Application.ScreenUpdating = True
End Sub

So jetzt habe ich nur noch das Problem, das er die 6 Dateien findet und den Inhalt in das Excel-Sheet schreibt, jedoch überschreibt er die Daten und hat am Schluss nur noch den Inhalt der letzten Datei im Excel-Sheet drinnen!
Wie kann ich das lösen, fande gestern einfach keine Lösung!!

Ich hoffe du kannst mir helfen oder der dies auch noch liest!!!

Gruß Sabrina

nach oben   nach unten

Versuch's so:
von: Michael Heering
Geschrieben am: 25.04.2002 - 20:42:08

Hallo Sabrina! In Cells.Copy Paper.Range("A1") steht ja das Ziel: nämlich A1. Versuche statt Range("A1") mal Cells(i,1). Dann müßten die Ergebisse untereinander stehen. Gruß Michael Heering

nach oben   nach unten

Re: Versuch's so:
von: MRR
Geschrieben am: 26.04.2002 - 06:30:20

Oder auch Cells.Copy Paper.Range("A1").End(xlDown).Offset(1, 0) Matthias

nach oben   nach unten

Leider nicht MRR
von: Sabrina
Geschrieben am: 26.04.2002 - 07:43:04

Bei dieser Variante gibt er gar nichts aus: Const File = "\\mvxz9s01\Sysvol\wwz0sm.rootdom.net\Policies" Application.ScreenUpdating = False Set Paper = Sheet4 'On Error Resume Next Set Datei = Application.FileSearch With Datei .Filename = "GptTmpl.inf" .LookIn = File .SearchSubFolders = True l = 0 If .Execute > 0 Then For i = 1 To .FoundFiles.Count Workbooks.OpenText .FoundFiles(i), Other:=True, OtherChar:="=" Do l = l + 1 s = Cells(l, "A") If Len(s) = 0 Then Cells(l, "A").Activate Exit Do End If Loop While l < 65535 Cells.Copy Paper.Range("A1").End(xlDown).Offset(1, 0) ActiveWorkbook.Close SaveChanges:=False Next End If End With Application.ScreenUpdating = True Und bei dieser: Const File = "\\mvxz9s01\Sysvol\wwz0sm.rootdom.net\Policies" Application.ScreenUpdating = False Set Paper = Sheet4 'On Error Resume Next Set Datei = Application.FileSearch With Datei .Filename = "GptTmpl.inf" .LookIn = File .SearchSubFolders = True l = 0 If .Execute > 0 Then For i = 1 To .FoundFiles.Count Workbooks.OpenText .FoundFiles(i), Other:=True, OtherChar:="=" Do l = l + 1 s = Cells(l, "A") If Len(s) = 0 Then Cells(l, "A").Activate Exit Do End If Loop While l < 65535 Cells.Copy Paper.Cells(i, 1) ActiveWorkbook.Close SaveChanges:=False Next End If End With Application.ScreenUpdating = True Gibt er mir nur die Daten der ersten Datei aus!!!

nach oben   nach unten

Nachfrage
von: Martin Beck
Geschrieben am: 26.04.2002 - 08:54:19

Hallo Sabrina, durch die ganzen Verschachtelungen, IF-Bedingungen und Schleifen ist es etwas schwierig nachzuvollziehen, was das MAkro genau leisten soll. Kannst Du das nochmal beschreiben? Außerdem fällt mir auf, daß gegenüber dem ursprünglichen Makro von MRR die Zeile .FileName = "*.inf" in .Filename = "GptTmpl.inf" Es werden also nicht alle, sondern nur eine bestimmte INF-Datei gesucht. Wenn die nur einmal vorkommt, kann das Makro auch nur einen Eintrag generieren. Gruß Martin Beck

nach oben   nach unten

Re: Nachfrage
von: Sabrina
Geschrieben am: 26.04.2002 - 09:03:20

Also, diese Datei gibt es mehrmals in dem Verzeichnis: "\\mvxz9s01\Sysvol\wwz0sm.rootdom.net\Policies" Und ich möchte nun das er mir alle Daten in den Dateien ausliest in das Excel Sheet, wie gesagt es besteht einfach das Problem das er mir entweder alles überschreibt, die Daten der ersten oder die letzten Datei anzeigt!Ich will doch einfach nur den Inhalt der Dateien GptTmpl.inf in meinem Excel Sheet sehen!!! So hier ist jetzt nochmal das ganze Teilprogramm! Const File = "\\mvxz9s01\Sysvol\wwz0sm.rootdom.net\Policies" Application.ScreenUpdating = False Set Paper = Sheet4 'On Error Resume Next Set Datei = Application.FileSearch With Datei .Filename = "GptTmpl.inf" .LookIn = File .SearchSubFolders = True l = 0 If .Execute > 0 Then For i = 1 To .FoundFiles.Count Workbooks.OpenText .FoundFiles(i), Other:=True, OtherChar:="=" Do l = l + 1 s = Cells(l, "A") If Len(s) = 0 Then Cells(l, "A").Activate Exit Do End If Loop While l < 65535 Cells.Copy Paper.Cells(i, 1) ActiveWorkbook.Close SaveChanges:=False Next End If End With Application.ScreenUpdating = True Jetzt erläutere ich dir nochmal die einzelnen schleifen und was sie machen: If .Execute > 0 Then For i = 1 To .FoundFiles.Count Workbooks.OpenText .FoundFiles(i), Other:=True, OtherChar:="=" Der Teil gibt die Anzahl der gefundenen Dateien aus, i ist hier jeweils die Datei 1-x! Do l = l + 1 s = Cells(l, "A") If Len(s) = 0 Then Cells(l, "A").Activate Exit Do End If Loop While l < 65535 Und der Teil schaut nach, wenn er die ersten Daten der ersten Datei eingefügt hat, wann die erste leere Zeile wieder erscheint, da funktioniert auch alles, denn im ersten Fall ist l=34 und jetzt soll er dann in ZEile 35 die Daten der DAtei 2 schreiben und war irgendwie mit dieser ZEile: Cells.Copy Paper.Cells(i, 1) Aber das funktioniert einfach nicht, da hänge ich jetzt schon seit Mittwoch dran!!!!

nach oben   nach unten

Lösungsvorschlag
von: Martin Beck
Geschrieben am: 26.04.2002 - 10:03:31

Hallo Sabrina, da gibt's gleich mehrere Probleme. Du verwendest die Variable I, um die erste freie Zelle zu ermitteln. In der Copy-Anweisung setzt Du dann allerdings die Variable i ein, das kann nicht funktionieren. Außerdem bin ich mir nicht sicher, ob Du die Workbooks korrekt referenzierst. Wenn der Copy-Befehl ausgeführt wird, sind ja 2 Workbooks offen und Du mußt aufpassen, wohin Du kopierst. Cells.Copy Paper.Cells(i, 1) versucht m.E. im aktiven Workbook in das Blatt paper zu speichern. Das aktive Workbook ist aber wohl die INF-Datei. Außerdem ist die Art und Weise, wie Du die nächste freie Zelle bestimmst, unnötig kompliziert. Lange Rede kurzer Sinn, versuch's mal so: Application.ScreenUpdating = False paper = "Sheet4" 'On Error Resume Next Set Datei = Application.FileSearch With Datei .FileName = "GptTmpl.inf" .LookIn = File .SearchSubFolders = True x = 1 If .Execute > 0 Then MsgBox .FoundFiles.Count For i = 1 To .FoundFiles.Count Workbooks.OpenText .FoundFiles(i), Other:=True, OtherChar:="=" ActiveSheet.UsedRange.Copy ThisWorkbook.Worksheets(paper).Cells(x, 1) x = ThisWorkbook.Worksheets(paper).Cells(x, 1).End(xlDown).Row + 1 ActiveWorkbook.Close SaveChanges:=False Next i End If End With Application.ScreenUpdating = True Gruß Martin Beck

nach oben   nach unten

Re: Lösungsvorschlag
von: Sabrina
Geschrieben am: 26.04.2002 - 10:12:01

Da hast du recht, ist mir gar nicht so genau aufgefallen! Aber dein Programm läuft auch nicht, also es läuft schon, aber es gibt gar keine Daten aus! Das Excel Sheet ist leer! Aber er zählt die richtige Anzahl an Dateien!! Na, noch eine Idee????

nach oben   nach unten

Re: Lösungsvorschlag
von: Martin Beck
Geschrieben am: 26.04.2002 - 10:53:51

Hallo Sabrina, hast Du in Deiner Datei ein Tabellenblatt, das "Sheet4" heißt? Wenn nicht, lege es mal an, dorthin sollen die Daten nämlich kopiert werden. Gruß Martin Beck

nach oben   nach unten

Re: Lösungsvorschlag
von: Sabrina
Geschrieben am: 26.04.2002 - 11:00:11

*ups* das war es!!!!! Ich hatte ein Sheet4, nur hätte ich anstatt Sheet4, Machine Configuration sagen müssen!!!! *g* *halbärger*

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "ComboBox Auswahl zufügen?"