PDA

Vollständige Version anzeigen : Wert Suchen,wenn gefunden in Ordner1,wenn nicht in Ordner2


MHC2004
20.02.2008, 16:36
Hallo,

letzte Frage für heute.:p (sehe schon nur noch Zahlen und Buchstaben:mrcool: )
Wie kann ich in jedem Worksheet einen Namen suchen.
Wenn der Name gefunden wird dann speichern in Ordner1, wenn nicht, speichern in Ordner2.

Habe es so versucht, nur leider werden alle sheets in beide Ordner gespeichert.

Sub speichern()
Dim oWs As Worksheet
Dim x As Range, y

On Error Resume Next
For Each oWs In ActiveWorkbook.Worksheets
oWs.Copy
ChDir "D:\Auswertungen\Steffi\EQ1\Benutzer_Text\"
With ActiveWorkbook
If x = Selection.Find("Bernd", lookat:=xlPart) Then _
.SaveAs Filename:="D:\Auswertungen\Ordner1\" & oWs.Name & ".txt", FileFormat:=xlText
If x = Not Selection.Find("Bernd", lookat:=xlPart) Then _
.SaveAs Filename:="D:\Auswertungen\Ordner2\" & oWs.Name & ".txt", FileFormat:=xlText
.Close False
End With
Next oWs
Unload UserForm1
Application.DisplayAlerts = False
Application.Quit
End Sub


Grüße

jinx
20.02.2008, 16:44
<font size="2" face="Century Gothic">Moin, MHC2004,

siehe das Beispiel aus der VBA-Hilfe (mit Set und Is Nothing):

With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Eine Lanze für die VBA-Hilfe - wenn man weiß, wo man suchen muss... :grins:</font>

MHC2004
20.02.2008, 18:29
Das hatte ich gefunden aber nicht wirklich was damit anfangen können weil dieser Code ja wenn die 2 gefunden wird eine 5 draus gemacht wird.

Werd mich aber mal probieren.
Hoffe ich kann trotzdem fragen wenn ich keinen Lösungsweg dazu finde.



Grüße

jinx
20.02.2008, 19:04
<font size="2" face="Century Gothic">Moin, MHC2004,

den Fragen möchte ich doch einen Riegel vorschieben... ;)

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> speichern()
<span class="TOKEN">Dim</span> oWs <span class="TOKEN">As</span> Worksheet
<span class="TOKEN">Dim</span> x <span class="TOKEN">As</span> Range <span class="REM">', y</span>
&nbsp;
<span class="TOKEN">On</span> <span class="TOKEN">Error</span> <span class="TOKEN">Resume</span> <span class="TOKEN">Next</span>
<span class="TOKEN">For</span> <span class="TOKEN">Each</span> oWs <span class="TOKEN">In</span> ActiveWorkbook.Worksheets
oWs.Copy
ChDir &quot;D:\Auswertungen\Steffi\EQ1\Benutzer_Text\&quot;
<span class="TOKEN">With</span> ActiveWorkbook
<span class="TOKEN">Set</span> x = Cells.Find(&quot;Bernd&quot;, lookat:=xlPart)
<span class="TOKEN">If</span> x <span class="TOKEN">Is</span> <span class="TOKEN">Nothing</span> <span class="TOKEN">Then</span>
.SaveAs FileName:=&quot;D:\Auswertungen\Ordner2\&quot; &amp; oWs.Name &amp; &quot;.txt&quot;, FileFormat:=xlText
<span class="TOKEN">Else</span>
.SaveAs FileName:=&quot;D:\Auswertungen\Ordner1\&quot; &amp; oWs.Name &amp; &quot;.txt&quot;, FileFormat:=xlText
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
.Close <span class="TOKEN">False</span>
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">Next</span> oWs
<span class="TOKEN">Set</span> x = <span class="TOKEN">Nothing</span>
Unload UserForm1
<span class="TOKEN">With</span> Application
.DisplayAlerts = <span class="TOKEN">False</span> <span class="REM">'weshalb?</span>
.Quit
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)</font>

MHC2004
20.02.2008, 19:55
Vielen lieben Dank für den Code.
Werd bevor ich Ihn einfüge erstmal drüber schauen und versuchen zu verstehen wie und warum.

With Application
.DisplayAlerts = False 'weshalb?
.Quit
End With


Wenn ich

.DisplayAlerts = False

nicht einsetze fragt mich Excel immer ob ich die Datei speichern möchte.
Da ich ja die Datei automatisch zu machen lassen möchte geht es so ganz gut.

Ich hatte ich doch das Problem mit:

.SaveCopyAs FileName:="D:\Auswertungen\Ordner1\" & oWs.Name & ".txt", FileFormat:=xlText

Das geht ja nun mal nicht.Wenn ich nach dem durchführen des gesamten Codes speichern würde, würde ich meine Ursprungsdatei ändern und das will ich ja nicht.
Das Makro importiert *.csv Dateien, speichert es in zwei Varianten ab(einmal komplette Datei, einmal Datei ohne Tabellenkopf) als *.txt Datei.
Da ich dadurch *.txt Dateien erhalte brauch ich das Makro immer unverändert.
Also Orginal.

Hoffe das war Verständlich erklärt, wenn nicht liegt es daran das ich zu viel Zeit für Excel heut verbraucht hab.(Tunnelblick):p


Grüße

jinx
20.02.2008, 20:33
<font size="2" face="Century Gothic">Moin, MHC2004,

Mappe mit Code schließen ohne Speichern und Abfrage kann man auch wie folgt:

ThisWorkbook.Close SaveChanges:=False
oder kurz
ThisWorkbook.Close False</font>