manuel5
Goto Top

VBA - Ordner aus ListBox-Auflistung rauskopieren?

Hallo mal wieder;

Habe ja nun die Suche nun hinbekommen. Klappt super.
Nun wird mir das Ergebnis in der Listbox angezeigt - und daraus will ich nun - entweder - wenn er nur eine Datei findet den Ordner in welcher die Datei sich befindet, in ein vorher angelegtes Verzeichnis legen, oder - wenn er mehrer Files findet, dann die von mir markierten Items kopieren.

Ist dies möglich? In der Listebox wird mir ja der gesamt Pfad mitsamt den Dateinamen angezeigt.

Also Quasi C:\test1\test2\test3\testfile.txt

hier soll er mit eben den Ordner test3 nehmen und kopieren.

Hier mal meine Suche -->


Private Sub CommandButton1_Click()
Dim sInhalt As String
Dim strDirDate As String
Dim strSender As String

strDirDate = frmTickets.DTPicker3
strSender = frmTickets.TextBox37
nDate = Format(frmTickets.DTPicker3, "yymmdd")
strDirDate = nDate
Label3 = Suchbegriff
Label2 = "C:\test1\" & strDirDate & "\" & strSender
sInhalt = txtsfile
pfad = "c:\test1\" & strDirDate & "\" & strSender & "\*.*"
Suchbegriff = TextBox1
ListBox1.Clear
If TextBox1 = "" Then
MsgBox "Bitte erst Suchbegriff eingeben"
Else
Set objShell = CreateObject("WScript.Shell")
CommandLine = "%comspec% /c findstr /m /s /i /c:""" & Suchbegriff & """ """ & pfad & """ "

Set objExecObject = objShell.Exec(CommandLine)
If Not objExecObject.StdOut.AtEndOfStream Then
Filelist = Split(Trim(objExecObject.StdOut.ReadAll()), vbCrLf)
For i = 0 To UBound(Filelist) - 1
ListBox1.AddItem Filelist(i)
Next
Else
ListBox1.AddItem "Datei nicht gefunden"
End If
End If
End Sub
___________________________________________________________________________


Private Sub CommandButton5_Click()
Dim strDirPath As String
strDirPath = frmTickets.txtSpeicherPfad
Shell "explorer.exe /e, " & strDirPath, vbNormalFocus
End Sub

___________________________________________________________________________
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim pfad As String
pfad = ListBox1
pathonly = Left(pfad, InStrRev(pfad, "\"))
Shell "explorer.exe /e," & pathonly, vbNormalFocus

TextBox2 = pathonly

End Sub
___________________________________________________________________________
Private Sub CommandButton3_Click()
Dim strDirZiel As String
Dim strDirDate As String
Dim strDirPath As String
Dim strCopyVon As String
Dim strSender As String
'Dim strDir As String
Dim pfad As String
nDate = Format(frmTickets.DTPicker3, "yymmdd")
strDirZiel = "Z:\export_invoices\"
strDirDate = nDate
strSender = frmTickets.TextBox37

strCopyVon = '!!!!!!!!!!!!Dieser Pfad wird mir einfach nicht gelingen!!!!!!!!!!!!
strDirPath = frmTickets.txtSpeicherPfad
strCopyVonPath = Left(strCopyVon, InStrRev(strCopyVon, "\"))
CreateObject("Scripting.FileSystemObject").CopyFolder strCopyVonPath, strDirPath
Label4 = strDirPath
___________________________________________________________________________
Private Sub CommandButton2_Click()
Unload Me
End Sub
___________________________________________________________________________

Wie ermittler ich den Pfad --> strCopyVon Path?
Hab hin und her - aber es heisst immer - Pfad nicht gefunden.
Habt ihr ne Idee?

Gruß Manuel

Content-ID: 98736

Url: https://administrator.de/contentid/98736

Ausgedruckt am: 20.11.2024 um 13:11 Uhr

bastla
bastla 08.10.2008 um 11:31:36 Uhr
Goto Top
Hallo manuel5!

Dein geposteter Code ist etwas unübersichlich (und auch nicht als solcher ) - außerdem ist mir nicht ganz klar, ob Du nun "strCopyVon" oder "strCopyVonPath" benötigst, und worin sich die beiden Variablen unterscheiden sollen ...

... trotzdem hätte ich eine Erklärung anzubieten, warum es mit dem so
strCopyVonPath = Left(strCopyVon, InStrRev(strCopyVon, "\"))  
ermittelten Pfad nicht klappt: Am Ende dieses Pfades befindet sich ein "\" - wenn Du also
strCopyVonPath = Left(strCopyVon, InStrRev(strCopyVon, "\") - 1)  
verwendest, sollte das zumindest erledigt sein.

Grüße
bastla
manuel5
manuel5 08.10.2008 um 11:38:20 Uhr
Goto Top
Servus,

stimmt - du hast recht - strCopyVonPath wäre strCopyVon -1. NUR das -1 hab ich vergessen! face-sad

Ich check des mal

Danke

Gruß Manuel
manuel5
manuel5 08.10.2008 um 11:44:10 Uhr
Goto Top
Servus bastla nochmal,

also soweit so gut - face-smile

Nur nimmt er nur den Ordner-Inhalt und nicht den Ordner (test3) und nimmt den Ordner und kopiert ihn in mein Zielverzeichnis.
Mit -2 wenn ich angeb dann findet er wieder den Pfad nicht.....

Gruß Manuel
bastla
bastla 08.10.2008 um 12:49:54 Uhr
Goto Top
Hallo manuel5!

Mit -2 wenn ich angeb dann findet er wieder den Pfad nicht.....
Das "-1" bezieht sich ja auch auf das letzte Zeichen (= "\") ...

Um den Ordnernamen zu erhalten (und ihn beim Kopieren an den Zielpfad anfügen zu können), könntest Du so vorgehen:
strCopyVonPath = Left(strCopyVon, InStrRev(strCopyVon, "\") - 1)  
strCopyVonFolder = Mid(strCopyVonPath, InStrRev(strCopyVonPath, "\") + 1)  

CreateObject("Scripting.FileSystemObject").CopyFolder strCopyVonPath, strDirPath & "\" & strCopyVonFolder)  
Grüße
bastla
manuel5
manuel5 08.10.2008 um 12:56:52 Uhr
Goto Top
HAMMA!

s löfft! face-smile

Super - danke.

Gruß Manuel
manuel5
manuel5 08.10.2008 um 13:32:11 Uhr
Goto Top
Noch ne kleine Frage.

Den Pfad -->

strCopyVon = Label5

erhalte ich ja erst wenn ich den ListboxInhalt doppelklicke.
Gibt es ne Lösung hier den Label5 schon "vorher" zu füllen?

Bin da schon am rumbasteln - hab aber seh warhscheinlich den Baum vor lauter Wald ned face-sad

Gruß Manuel
manuel5
manuel5 08.10.2008 um 16:54:15 Uhr
Goto Top
Danke - habs gefunden - Einfach gleich bei der Suche den Pfad anlegen face-smile

Gruß Manuel