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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 98736
Url: https://administrator.de/contentid/98736
Ausgedruckt am: 20.11.2024 um 13:11 Uhr
7 Kommentare
Neuester Kommentar
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
ermittelten Pfad nicht klappt: Am Ende dieses Pfades befindet sich ein "\" - wenn Du also
verwendest, sollte das zumindest erledigt sein.
Grüße
bastla
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, "\"))
strCopyVonPath = Left(strCopyVon, InStrRev(strCopyVon, "\") - 1)
Grüße
bastla
Hallo manuel5!
Um den Ordnernamen zu erhalten (und ihn beim Kopieren an den Zielpfad anfügen zu können), könntest Du so vorgehen:
Grüße
bastla
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)
bastla