Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst VBA - Ausgewählte Zeilen in Listbox alle kopieren

Mitglied: manuel5

manuel5 (Level 1) - Jetzt verbinden

11.10.2008, aktualisiert 12.10.2008, 10041 Aufrufe, 8 Kommentare

Moin moin,

wie schaffe ich es das er mir aus meiner Listbox (mit Kontrollkästchen) die angehackten "Zeilen" kopiert.
Das kopieren klappt nur leider nur den letzten Eintrag der Listbox

01.
Private Sub cmdRechnungKopieren_Click() 
02.
 
03.
Dim strDirDate As String 
04.
Dim strDirPath As String 
05.
Dim strCopyVon As String 
06.
Dim strSender As String 
07.
Dim pfad As String 
08.
 
09.
nDate = Format(frmTickets.DTPicker3, "yymmdd") 
10.
strDirDate = nDate 
11.
strSender = txtKW 
12.
strCopyVon = Label54 
13.
strDirPath = txtSpeicherPfad 
14.
strCopyVonPath = Left(strCopyVon, InStrRev(strCopyVon, "\") - 1) 
15.
strCopyVonFolder = Mid(strCopyVonPath, InStrRev(strCopyVonPath, "\") + 1) 
16.
 
17.
CreateObject("Scripting.FileSystemObject").CopyFolder strCopyVonPath, strDirPath & "\" & strCopyVonFolder 
18.
 
19.
End Sub
Ist es überhaupt möglich?



Gruß Manuel
Mitglied: bastla
11.10.2008 um 22:39 Uhr
Hallo manuel5!

Wenn Du eine MultiSelect-ListBox verwendest, kannst Du die gewählten Elemente so auslesen bzw gleich für jedes einzelne Element eine Kopierroutine - im Beispiel "Sub KopiereRechnungEinzel(Pfad)" - aufrufen:
01.
For i = 0 To ListBox1.ListCount - 1 
02.
    If ListBox1.Selected(i) = True Then 
03.
        KopiereRechnungEinzel ListBox1.List(i) 
04.
    End If 
05.
Next i
Grüße
bastla
Bitte warten ..
Mitglied: manuel5
12.10.2008 um 10:52 Uhr
Moin bastla,

so in etwa dachte ich es mir. Nur wo soll ich diese Routine eingeben?
Soll ich hierfür nen eigenen Sub anlegen? Hmmm......

Oder cmdRechnungKopieren_Click() ) ich denke hier wäre die Auslese besser aufgehoben oder?

Gruß Manuel
Bitte warten ..
Mitglied: bastla
12.10.2008 um 11:06 Uhr
Hallo manuel5!

An sich gehört diese Routine dort hin, wo Du bisher schon den Eintrag aus der ListBox ausgelesen hast (diesen Code-Teil hast Du hier nicht gepostet) - allerdings müssen jetzt ja gleich alle gewählten Einträge verarbeitet werden, sodass der Zwischenschritt über das Anzeigen im "Label54" eigentlich entfallen kann und für jede gewählte Datei, wie von mir skizziert, ein Sub zur Ausführung des Kopiervorganges aufzurufen, oder das Kopieren gleich in der Schleife selbst abgewickelt werden sollte.

Grüße
bastla
Bitte warten ..
Mitglied: manuel5
12.10.2008 um 11:21 Uhr
Ja, klar -

01.
Private Sub cmdRechnungSuchen_Click() 
02.
Dim sInhalt As String 
03.
Dim strDirDate As String 
04.
Dim strSender As String 
05.
Dim strVerzeichnis As String 
06.
 
07.
 
08.
 
09.
strDirDate = DTPicker3 
10.
strSender = TextBox41 
11.
nDate = Format(DTPicker3, "yymmdd") 
12.
strDirDate = nDate 
13.
sInhalt = txtSuchBox 
14.
Pfad = strVerzeichnis & "\" & strDirDate & "\" & strSender & "\*.*" 
15.
Suchbegriff = txtSuchBox 
16.
ListBox2.Clear 
17.
 
18.
If txtSpeicherPfad = "" Then 
19.
MsgBox "Bitte Ordner anlegen" 
20.
cmdOrdnerAnlegen.SetFocus 
21.
Else 
22.
If txtSuchBox = "" Then 
23.
MsgBox "Bitte erst Suchbegriff eingeben" 
24.
txtSuchBox.SetFocus 
25.
Else 
26.
Set objShell = CreateObject("WScript.Shell") 
27.
 
28.
CommandLine = "%comspec% /c findstr /m /s /i /c:""" & Suchbegriff & """ """ & Pfad & """ " 
29.
 
30.
Set objExecObject = objShell.Exec(CommandLine) 
31.
    If Not objExecObject.StdOut.AtEndOfStream Then 
32.
        Filelist = Split(Trim(objExecObject.StdOut.ReadAll()), vbCrLf) 
33.
        For i = 0 To UBound(Filelist) - 1 
34.
            ListBox2.AddItem Filelist(i) 
35.
             
36.
            Label54 = Filelist(i) 
37.
        Next 
38.
        Else 
39.
        ListBox2.AddItem "Datei nicht gefunden" 
40.
        End If 
41.
    End If 
42.
End If 
43.
 
44.
End Sub
Wenn ich es bei " For i = 0 To UBound(Filelist) - 1" einfüge, dann findet er mir garnichts mehr . Von daher denke ich hab ich irgendwo nen Denkfehler drin.

Also -Schritt 1- Files suchen - Schritt 2 - Gefunden Files in Listbox anzeigen - Dann die ausgwählten Files in Schleife und diese dann kopieren.

So sollte es laufen oder?

Gruß Manuel
Bitte warten ..
Mitglied: bastla
12.10.2008 um 12:11 Uhr
Hallo manuel5!

Die Schritte 1 und 2 hattest Du ja schon, und diese sollen sich auch gar nicht ändern. Das Ergebnis - die "ListBox2" mit allen gefundenen Einträgen - bildet dann die Grundlage für den nächsten Schritt.

Da für den Schritt 3 ja zunächst einmal Voraussetzung ist, dass die gewünschten Dateien ausgewählt wurden (wofür der Benutzerin/dem Benutzer Zeit zu geben ist), muss dieser Schritt (über den Button "cmdRechnungKopieren") getrennt gestartet werden.

Grüße
bastla
Bitte warten ..
Mitglied: manuel5
12.10.2008 um 19:31 Uhr
Servus bastla,

sorry, ich check das ned.

Hab ja meine Suche -->

01.
Private Sub cmdRechnungSuchen_Click() 
02.
Dim sInhalt As String 
03.
Dim strDirDate As String 
04.
Dim strSender As String 
05.
Dim strVerzeichnis As String 
06.
 
07.
 
08.
 
09.
strDirDate = DTPicker3 
10.
strSender = TextBox41 
11.
nDate = Format(DTPicker3, "yymmdd") 
12.
strDirDate = nDate 
13.
sInhalt = txtSuchBox 
14.
Pfad = strVerzeichnis & "\" & strDirDate & "\" & strSender & "\*.*" 
15.
Suchbegriff = txtSuchBox 
16.
ListBox2.Clear 
17.
 
18.
If txtSpeicherPfad = "" Then 
19.
MsgBox "Bitte Ordner anlegen" 
20.
cmdOrdnerAnlegen.SetFocus 
21.
Else 
22.
If txtSuchBox = "" Then 
23.
MsgBox "Bitte erst Suchbegriff eingeben" 
24.
txtSuchBox.SetFocus 
25.
Else 
26.
Set objShell = CreateObject("WScript.Shell") 
27.
 
28.
CommandLine = "%comspec% /c findstr /m /s /i /c:""" & Suchbegriff & """ """ & Pfad & """ " 
29.
 
30.
Set objExecObject = objShell.Exec(CommandLine) 
31.
    If Not objExecObject.StdOut.AtEndOfStream Then 
32.
        Filelist = Split(Trim(objExecObject.StdOut.ReadAll()), vbCrLf) 
33.
        For i = 0 To UBound(Filelist) - 1 
34.
        '    For i = 0 To Ubound(ListBox2.ListCount - 1 
35.
    If ListBox2.Selected(i) = True Then 
36.
        KopiereRechnungEinzel ListBox2.List(i) 
37.
    End If 
38.
Next i 
39.
       ' Next 
40.
        Else 
41.
        ListBox2.AddItem "Datei nicht gefunden" 
42.
        End If 
43.
    End If 
44.
End If 
45.
 
46.
End Sub
Und hier muss ich dann das gefundene in die Schleife packen -->

01.
Sub KopiereRechnungEinzel(Pfad) 
02.
For i = 0 To ListBox2.ListCount - 1 
03.
    If ListBox2.Selected(i) = True Then 
04.
        KopiereRechnungEinzel ListBox2.List(i) 
05.
    End If 
06.
Next i 
07.
End Sub
So - und dann den Schleifeninhalt in mein Ziel-Pfad kopieren -->

01.
Private Sub cmdRechnungKopieren_Click() 
02.
'Dim strDirZiel As String 
03.
Dim strDirDate As String 
04.
Dim strDirPath As String 
05.
Dim strCopyVon As String 
06.
Dim strSender As String 
07.
Dim Pfad As String 
08.
Dim i As Long 
09.
 
10.
 
11.
nDate = Format(frmTickets.DTPicker3, "yymmdd") 
12.
'strDirZiel = "Z:\test\" 
13.
strDirDate = nDate 
14.
strSender = txtKW 
15.
strCopyVon = ListBox2.List(i) 
16.
strDirPath = txtSpeicherPfad 
17.
strCopyVonPath = Left(strCopyVon, InStrRev(strCopyVon, "\") - 1) 
18.
strCopyVonFolder = Mid(strCopyVonPath, InStrRev(strCopyVonPath, "\") + 1) 
19.
 
20.
CreateObject("Scripting.FileSystemObject").CopyFolder strCopyVonPath, strDirPath & "\" & strCopyVonFolder 
21.
 
22.
End Sub
ABER - wo\wie übergebe ich den Inhalt der Schleife?

Kanns drehen und wenden - sorry ich komm ned drauf.

Gruß Manuel
Bitte warten ..
Mitglied: bastla
12.10.2008 um 19:52 Uhr
Hallo manuel5!

Du brauchst eigentlich nur zwei Teile:
01.
Private Sub cmdRechnungSuchen_Click() 
02.
Dim sInhalt As String 
03.
Dim strDirDate As String 
04.
Dim strSender As String 
05.
Dim strVerzeichnis As String 
06.
 
07.
 
08.
 
09.
strDirDate = DTPicker3 
10.
strSender = TextBox41 
11.
nDate = Format(DTPicker3, "yymmdd") 
12.
strDirDate = nDate 
13.
sInhalt = txtSuchBox 
14.
Pfad = strVerzeichnis & "\" & strDirDate & "\" & strSender & "\*.*" 
15.
Suchbegriff = txtSuchBox 
16.
ListBox2.Clear 
17.
 
18.
If txtSpeicherPfad = "" Then 
19.
    MsgBox "Bitte Ordner anlegen" 
20.
    cmdOrdnerAnlegen.SetFocus 
21.
Else 
22.
    If txtSuchBox = "" Then 
23.
        MsgBox "Bitte erst Suchbegriff eingeben" 
24.
        txtSuchBox.SetFocus 
25.
    Else 
26.
        Set objShell = CreateObject("WScript.Shell") 
27.
 
28.
        CommandLine = "%comspec% /c findstr /m /s /i /c:""" & Suchbegriff & """ """ & Pfad & """ " 
29.
 
30.
        Set objExecObject = objShell.Exec(CommandLine) 
31.
        If Not objExecObject.StdOut.AtEndOfStream Then 
32.
            Filelist = Split(Trim(objExecObject.StdOut.ReadAll()), vbCrLf) 
33.
            For i = 0 To UBound(Filelist) - 1 
34.
                ListBox2.AddItem Filelist(i)  
35.
            Next 
36.
        Else 
37.
            ListBox2.AddItem "Datei nicht gefunden" 
38.
        End If 
39.
		 
40.
    End If 
41.
End If 
42.
 
43.
End Sub
Wenn der Button "cmdRechnungSuchen" angeklickt wurde, ist (aufgrund des obigen Sub) das Ergebnis die Liste aller gefundenen Rechnungen (oder eben "Datei nicht gefunden") in "ListBox2".

Sobald nun das Kopieren mit Klick auf "cmdRechnungKopieren" gestartet wird, soll jede gewählte Datei (zu erkennen an der "Selected()"-Eigenschaft des jeweiligen "ListBox2"-Eintrages) kopiert werden. Das Kopieren kann in ein eigenes Sub ausgelagert, oder, wie unten gezeigt, gleich in die Ausleseschleife integriert werden:
01.
Private Sub cmdRechnungKopieren_Click() 
02.
'Dim strDirZiel As String 
03.
Dim strDirDate As String 
04.
Dim strDirPath As String 
05.
Dim strCopyVon As String 
06.
Dim strSender As String 
07.
Dim Pfad As String 
08.
Dim i As Long 
09.
 
10.
 
11.
 
12.
nDate = Format(frmTickets.DTPicker3, "yymmdd") 
13.
'strDirZiel = "Z:\test\" 
14.
strDirDate = nDate 
15.
strSender = txtKW 
16.
strDirPath = txtSpeicherPfad 
17.
 
18.
For i = 0 To ListBox2.ListCount - 1 
19.
    If ListBox2.Selected(i) = True Then 
20.
        strCopyVon = ListBox2.List(i) 
21.
        strCopyVonPath = Left(strCopyVon, InStrRev(strCopyVon, "\") - 1) 
22.
        strCopyVonFolder = Mid(strCopyVonPath, InStrRev(strCopyVonPath, "\") + 1) 
23.
 
24.
        CreateObject("Scripting.FileSystemObject").CopyFolder strCopyVonPath, strDirPath & "\" & strCopyVonFolder 
25.
 
26.
	End If 
27.
Next i 
28.
 
29.
End Sub
Dabei gelten dann für alle Dateien die selben Werte für "strDirDate", "strSender" und "strDirPath".

Grüße
bastla
Bitte warten ..
Mitglied: manuel5
12.10.2008 um 20:13 Uhr
Oh mein Gott - natürlich! Mannmannmann!

Danke dir, abundzu steht ich echt aufn Schlauch

Super danke dir !

Gruß Manuel
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

VBA: nach ausgewählten Kriterien filtern

Frage von BerndVorwerkMicrosoft Office7 Kommentare

Hallo an alle. Auch auf die Gefahr hin, dass ich euch so langsam auf die Nerven gehe, aber ich ...

VB for Applications

Excel VBA - Auswahl aus Listbox bearbeiten

Frage von MasterSchlumpfVB for Applications1 Kommentar

Hallo Profis, ich benötige Eure Hilfe in Excel VBA. Ich lasse den Inhalt einer Tabelle in einer Listbox anzeigen. ...

VB for Applications

Excel 2010 vba mehrspaltige listbox

Frage von AsciWhiteVB for Applications11 Kommentare

Hallo, ich versuche Daten aus einer Access-Datei in eine ListBox auf einer Userform einzulesen. Dazu habe ich die ListBox ...

VB for Applications

Excel VBA: Listbox Ausgabe über Comboboxen filtern

gelöst Frage von JuweeeVB for Applications2 Kommentare

Hallo, hat jemand zufällig ein Beispiel oder einen Link in peto, der zeigt wie die Ausgabe in einer Listbox ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 22 StundenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 1 TagCPU, RAM, Mainboards6 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 1 TagRouter & Routing7 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

LAN, WAN, Wireless
100m+ Leitungslänge Ethernet
gelöst Frage von Ex0r2k16LAN, WAN, Wireless16 Kommentare

Guten Morgen zusammen, ich habe eine Netzwerkdose die die 100m Leitungslänge bis zum Switch knackt. Damit die Verbindung einigermaßen ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör16 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...