Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1612to1616
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

USB Port prüfen und Dateiübertragung auf USB Stick

USB Port prüfen und Dateiübertragung auf USB Stick
10.03.2018 17:15:34
Marvin
Guten Tag zusammen,
folgende Idee versuche ich umzusetzen:
In Pfad XY befinden sich x Dateien, welche ich über Excel (Als Brücke) versuche auf einen USB Stick zu speichern.
System: Win 7 Enterprise
Excel Version: 2016
Ablauf:
1.Stick wird in USB Port geschoben. (Eine visuelle Anzeige über die Belegung in einer Userform möglich?)
2. Per Barcodescanner wird ein bestimmter Wert in eine Textbox (Userform) gescannt.
Das Auslesen des Wertes bestimmt den Pfad in dem sich die Dateien ausgelesen werden müssen.
(Insgesamt 2 Pfade, da jeweils unterschiedliche Dateien hinterlegt sind)
3. Wurde der Pfad erkannt, sollen demnach alle sich in dem Pfad befindlichen Dateien auf einen USB Stick übertragen werden.
Ausgelöst werden soll dieser Prozess lediglich durch das Einscannen eines bestimmten Wertes.
Ich hoffe ihr könnt mich unterstützen. Sollten weitere Angaben nötig sein, lasst es mich wissen.
Viele Grüße und besten Dank!

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: USB Port prüfen und Dateiübertragung auf USB Stick
10.03.2018 18:00:21
Fennek
aus dem Netz:

Sub DriveTypeAndList()
Dim objDrv      As Object
Dim strMsg      As String
For Each objDrv In CreateObject("Scripting.FileSystemObject").Drives
Select Case objDrv.DriveType
Case 0: strMsg = strMsg & vbNewLine & objDrv.DriveLetter & ": Unknown"
Case 1: strMsg = strMsg & vbNewLine & objDrv.DriveLetter & ": Removable Drive"
Case 2: strMsg = strMsg & vbNewLine & objDrv.DriveLetter & ": Hard Disk Drive"
Case 3: strMsg = strMsg & vbNewLine & objDrv.DriveLetter & ": Network Drive"
Case 4: strMsg = strMsg & vbNewLine & objDrv.DriveLetter & ": CDROM Drive"
Case 5: strMsg = strMsg & vbNewLine & objDrv.DriveLetter & ": RAM Disk Drive"
End Select
Next
Set objDrv = Nothing
MsgBox strMsg, vbInformation, "Excel Experts Tip"
End Sub

Anzeige
AW: USB Port prüfen und Dateiübertragung auf USB Stick
10.03.2018 18:13:53
Marvin
Hey Fennek,
danke für deine Rückmeldung, allerdings bringt mir die Anzeige in dieser Form nicht viel, da ich mir eine Echtzeit Anzeige vorstelle innerhalb der Userform, sobald es zu einer Veränderung am USB-Port kommt.
Mein Fokus liegt aber vorerst auf Punkt 2 und 3.
Beste Grüße
AW: USB Port prüfen und Dateiübertragung auf USB Stick
10.03.2018 18:50:47
Planlos
Hallo
wenn es um die Laufwerkserkennung (Laufwerk kommt hinzu/ Laufwerk wird ausgeworfen) geht, wäre das ggf mittels einem asyncronen WMI-Query möglich
Verweis auf die Microsoft WMI Vx.xx Libary setzen

Option Explicit
Private WithEvents EvtCls As SWbemSink
Private o As WbemScripting.SWbemServices
Private Sub EvtCls_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal  _
objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
Dim sOut As String
With objWbemObject
Select Case .Path_.Class
Case "__InstanceCreationEvent": Me.Text2 = .TargetInstance.Caption & " hinzugefügt  _
am/um " & Now
Case "__InstanceDeletionEvent": Me.Text2 = .TargetInstance.Caption & " entfernt am/ _
um " & Now
End Select
End With
End Sub
Private Sub Form_Load()
If o Is Nothing Then
Set o = CreateObject("winmgmts:{impersonationLevel=Impersonate}!\\" & "." & "\root\ _
CIMV2")
Set EvtCls = New WbemScripting.SWbemSink
o.ExecNotificationQueryAsync EvtCls, "SELECT * FROM __InstanceOperationEvent WITHIN 1  _
WHERE TargetInstance ISA 'Win32_LogicalDisk'" '" 'Win32_VolumeChangeEvent"
End If
End Sub

die Form_Load ist jetzt nicht Excel, den code daraus musst du in das Inialisirungsereignis der Userform einsetzen
Anzeige
Noch Offen: Auslesen der Dateien + Speicherung
10.03.2018 20:18:44
Marvin
Hallo Planlos,
so ganz nach planlos sieht es mir nicht aus, allerdings steht für mich noch die frage aus, wo ich den restlichen Code hinsetzen darf und wie er entsprechend angepasst werden muss.
Hoffe du kannst mir hier noch einmal Starthilfe geben.
Beste Grüße
AW: Noch Offen: Auslesen der Dateien + Speicherung
11.03.2018 15:04:13
Planlos
Hallo
der oben gezeigte Code erkennt nur ob ein USB-Stick eingesteckt oder Ausgeworfen wird. Da ich nicht weis wie du deinen Scanner in Excel implementiert hast und was letztendlich in der ensprechenden Textbox/label steht, folgender Luftcode/testvorschlag bei dem auf das Change-Ereignis der Textbox reagiert wird die dein Scanner-Ereigniss befüllt.
da die Forumssoftware längere Zeilen ohne Logik killt und ich hier nix uploaden kann als externe txt
https://www.dropbox.com/s/crlt4ae6cy8h2im/wmiusbstick.txt?dl=0
Anzeige
AW: USB Port prüfen und Dateiübertragung auf USB Stick
11.03.2018 07:49:38
Oberschlumpf
Hi Marvin,
ich habe vllt eine Lösung
hier gefunden: http://www.office-loesung.de/ftopic637137_0_0_asc.php
Dafür ist es aber erforderlich, dass dein USB-Stick eine Datei enthalten muss, die auf sonst keinem Laufwerk enthalten ist.
Enthält also dein Stick - immer - eine Datei mit - immer - dem gleichen Dateinamen, die nur auf dem Stick gespeichert ist? (das wäre die eindeutigste Lösung)
Wenn auf dem Stick immer unterschiedliche Dateien gespeichert sind, dann versuch es mal so:
1. Verbinde den Stick mit deinem Computer
2. Erstell auf dem Stick im Root-Verzeichnis eine neue Textdatei mit dem Namen USB_Stick_ist_hier.txt
Groß-/Kleinschreibung des Dateinamens ist egal.
Die Datei muss auch keinen Inhalt haben; Dateigröße = 0KB ist ok.
3. Lade meine Bsp-Datei runter https://www.herber.de/bbs/user/120324.xlsm
4. Starte das Makro mit dem Namen a
Wenn du von 1. - 4. alles richtig gemacht hast, erscheint eine MsgBox mit dem Text:
"Es wurde ein USB-Stick mit dem Laufwerksbuchstaben Laufwerk:\erkannt"
Anstelle von Laufwerk:\ erscheint natürlich der Buchstabe, der deinem Stick vom System zugewiesen wurde.
So, das alles ist nun erst mal "meine Vorrede" :-)
Wenn alles so funktioniert, wie von mir beschrieben (wie schon erwähnt, am besten wäre, der Stick enthält immer eine Datei mit dem gleichen Namen), dann werde ich in meiner nächsten Antwort eine Bsp-Datei erstellen, die, abhängig davon, ob der Stick angeschlossen ist oder nicht, einen CommandButton enthält, der dir schon vorm Anklicken anzeigt, ob der Stick angeschlossen ist oder nicht.
Ciao erst mal
Thorsten
Anzeige
USB Port prüfen und Dateiübertragung auf USB Stick
11.03.2018 09:29:56
Marvin
Guten Morgen Thorsten,
vielen Dank für deine ausführliche Beschreibung.
Ich habe den Weg eingeschlagen eine Textdatei anzulegen und die Laufwerkerkennung hat funktioniert.
Allerdings muss ich dazu sagen, dass mich diese Lösung nicht weiterbringt.
Ich hätte den Ablauf vermutlich was genauer erläutern sollen.
Der Fokus liegt auf die Auslesung der Dateien aus zwei bestimmten Pfaden und die Speicherung dieser auf einen USB-Stick.
Szenario:
1)Ich nehme einen leeren USB-Stick und schiebe diesen in einen freien USB-Port.
2)Die TextBox2 in einer Userform ändert ihre Hintergrundfarbe von bspw. rot nach grün, da Port besetzt wurde.
3) Ich scanne einen Barcode mit dem Text Pfad_1 in Textbox1 ab
4)Daraufhin sollen die sich im Pfad 1 befindlichen Dateien auf den Stick übertragen werden.
Nach erfolgreicher Übertragung kann meinetwegen eine MsgBox erfolgen oder auch hier kann eine Textbox3 mit dem Inhalt "Dateien wurden übertragen" gefüllt werden.
5) Nach erfolgreicher Übertragung soll der Stick automatisch ausgeworfen oder einfach manuell entfernt werden. TextBox2 ändert die Hintergrundfarbe wieder auf Rot, da Port nicht mehr besetzt ist.
Hoffe ich konnte euch damit noch einige Anhaltspunkte mitgeben und hoffe weiter auf eure Unterstützung.
Beste Grüße,
Marvin
Anzeige
USB Port prüfen und Dateiübertragung auf USB Stick
11.03.2018 12:35:35
Anton
Hallo Marvin,
so prüfst du, ob ein Stick eingesteckt wurde und kannst den entfernen lassen:
Code in Zwischenablage:

'UserForm mit Label1 und CommandButton1
Private Sub UserForm_Activate()  
  Dim objWMIService As Object, colMonitoredEvents As Object, objLatestEvent As Object  
  Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
  Set colMonitoredEvents = objWMIService.ExecNotificationQuery("Select * from Win32_VolumeChangeEvent")  
  With Me.CommandButton1
    .Caption = "Stick auswerfen und Ende"
    .Enabled = False
  End With  
  With Me.Label1
    .BackColor = vbRed
    .Caption = "kein Stick"
   'warten bis ein Stick eingesteckt wurde
    Do
      DoEvents
      Set objLatestEvent = colMonitoredEvents.NextEvent  
    Loop Until objLatestEvent.EventType = 2  
   'Laufwerksbuchstabe vom Stick anzeigen
    .Caption = objLatestEvent.DriveName
    .BackColor = vbGreen
  End With  
  Me.CommandButton1.Enabled = True
End Sub  
Private Sub CommandButton1_Click()  
  Dim fso As Object, l As Object  
 'Stick auswerfen
  CreateObject("Shell.Application").Namespace(17).ParseName(Me.Label1.Caption).InvokeVerb ("Eject")  
  Set fso = CreateObject("Scripting.FileSystemObject")  
  Set l = fso.GetDrive(Me.Label1.Caption)  
  Do: DoEvents: Loop Until Not l.IsReady      
  Set fso = Nothing  
 'Userform schließen
  Unload Me
End Sub  


Wie man die Dateien kopiert, kannst du hier nachschauen.
mfg Anton
Anzeige
AW: USB Port prüfen und Dateiübertragung auf USB Stick
11.03.2018 13:54:27
Oberschlumpf
Hi Anton,
dein Code hat mein Excel zum Absturz gebracht.
Kannst du mir bitte mal ne Datei mit deinem Code per Upload zeigen?
Danke
Ciao
Thorsten
AW: USB Port prüfen und Dateiübertragung auf USB Stick
11.03.2018 15:07:23
Anton
Hallo Thorsten,
hier eine Beispieldatei.
mfg Anton
Problem! Entfernen des Datenträgers
12.03.2018 22:35:39
Marvin
Hallo Anton,
beim Entfernen des Datenträgers gestaltet sich eine Schwierigkeit.
Ein Pop-Up Fenster mit der Windows Sicherheitswarnung "Der Wechseldatenträger wird derzeit verwendet"
taucht nach ausführen des Codes auf und führt den Code somit nicht in einem Durchlauf aus.
Erst nachdem ich die Sicherheitswarnung mit "Fortsetzen" umgehe, läuft der Code durch und der Datenträger wird entfernt. Hast du hierzu eine Lösung wie es dazu kommen kann und wie man dieser Sicherheitswarnung aus dem Weg gehen kann?
Beste Grüße,
Marvin
Anzeige
Beispieldatei? oT
13.03.2018 08:14:04
Anton
AW: Beispieldatei? oT
13.03.2018 11:14:09
Marvin
Hey Anton,
das Problem tritt ebenfalls bei deiner Beispieldatei auf. Eventuell nicht direkt beim ersten Durchlauf8, allerdings darauffolgend. Habe lediglich deinen Code übernommen und beim Ausführen folgt die Warnung.
Grüße
AW: Beispieldatei? oT
13.03.2018 12:17:11
Anton
Hallo Marvin,
das Problem tritt ebenfalls bei deiner Beispieldatei auf.
Kann nicht nachvollziehen, bei mir funktioniert meine Beispieldatei ohne Probleme.
mfg Anton
AW: Beispieldatei? oT
13.03.2018 15:21:10
Marvin
Hey Anton,
sowohl bei deiner Beispieldatei, als auch meiner erhalte ich von Windows folgende Warnung.
Userbild
Woran kann dies liegen und wie kann ich es unterdrücken?
Beste Grüße und vielen Dank für deine Unterstützung!
Marvin
Anzeige
AW: Beispieldatei? oT
14.03.2018 14:49:13
Anton
Hallo Marvin,
ich kann mir vorstellen, dass irgendeine Datei vom Stick im Zugriff ist (geöffnet, wird kopiert etc.)
mfg Anton
Offene Frage!
14.03.2018 19:32:22
Marvin
Hey Anton,
noch eine kurze Frage zu diesem Code, welcher nach Aktivierung der Userform startet.
Allerdings fiel mir auf, dass nach dem die Userform aktiv ist, ich keinerlei Möglichkeit habe, weitere Makros auszuführen, da die Oberfläche wie eingefroren scheint, während das Makro durchläuft, kann man dies in irgendeiner Weise unterbinden und an welcher Stelle erfolgt der Befehl im Code?
Beste Grüße,
Marvin
AW: Offene Frage!
15.03.2018 07:29:57
Anton
Hallo Marvin,
an welcher Stelle erfolgt der Befehl im Code?

'warten bis ein Stick eingesteckt wurde
Do
DoEvents
Set objLatestEvent = colMonitoredEvents.NextEvent
Loop Until objLatestEvent.EventType = 2 

kann man dies in irgendeiner Weise unterbinden
ich wüsste nicht, wie man den Zeitpunkt des Einsteckens des Sticks anders überwachen kann.
mfg Anton
Anzeige
AW: Offene Frage!
15.03.2018 09:14:07
Planlos
Wie schon oben geschrieben ist es möglich das Einstecken asyncron zu überwachen und nur bei einem abgefeuerten Event, sprich Stick wird eingesteckt/Stick wird ausgesteckt zu reagieren, die Userform wird hiebei nicht durchs Warten blockiert.
Alternativ könntest du mittels eines Timers und einer API-Funktion die Laufwerksbuchstaben überwachen.
AW: Offene Frage!
15.03.2018 13:39:58
Marvin
Hey Planlos,
vielen Dank, dass du dich nochmals dazu meldest, wäre es deinerseits zeitlich möglich mir eine Proto-Userform aufzubauen, sodass ich dies direkt mal testen kann und entsprechend für mich eine Entscheidung treffen kann.
Die Lösung von Anton ist bisher super und entspricht eigentlich genau dem, wonach ich gefragt hatte. Wie es nunmal so ist, kamen mir daraufhin neue Ideen, welche ich allerdings mit einer "eingefrorenen" Oberfläche nicht ausführen kann wie bspw. das öffnen des Laufwerks über einen weiteren Button u.ä.
Vielen Dank für deine Rückmeldung.
Grüße,
Marvin
AW: Offene Frage!
15.03.2018 17:49:54
Planlos
hier mal den oben geposteten code als xlsm
https://www.dropbox.com/s/m3mv56zo81mpqzl/WMIUSBErkennung.xlsm?dl=0
Was nicht erkannt wird ist der Auswurf des Sticks, so wie Anton es gezeigt hat. Evtl würde hier die Apivariante helfen, sicher bin ich jetzt aber nicht, ist mir jetzt aber auch zu aufwendig diese 64bit kompatibel zu machen.
https://activevb.de/tipps/vb6tipps/tipp0718.html
Abgeschlossen!
15.03.2018 18:55:20
Marvin
Hallo Planlos,
durch deinen Code wird auf alle Fälle gewährleistet, dass weitere Funktionen ausgeführt werden können, egal ob das Laufwerk belegt ist, oder nicht.
Ich denke mit deinem, als auch Anton seinem Code, kann ich mir was entsprechendes zusammenbasteln.
Vielen Dank an euch beiden und an die anderen, die mitgewirkt haben.
Großes Kompliment!
Grüße,
Marvin
AW: Offene Frage!
15.03.2018 20:37:25
Marvin
Kurze Frage an Planlos,
wie ist es möglich, dass ich die Schaltfläche in beliebig leere Dateien kopieren kann, es sich dennoch die Userform aus deiner Datei öffnet, obwohl lediglich in deiner Datei:
Sub Schaltfläche1_Klicken()
UserForm1.Show
End Sub
hinterlegt wurde. Zudem viel mir auf, als ich das Überwachungsfenster startete, dass sich im Lokalfenster ein .Me Ausdruck befand. Nachdem ich es mir mal erlaubt hatte, darauf zu klicken, startete im Hintergrund Outlook. Die Gesamte Prozedur ließ sich dann lediglich über den Task-Manager schließen. Irgend nh Idee? Schien mir ziemlich komisch.
Grüße
AW: Offene Frage!
15.03.2018 21:18:27
Planlos
Hallo
dieses Verhalten hatte ich auch schon festgestellt das beim C/P einer Schaltfläche in eine andere Mappe diese immer noch mit der Orginale Datei verbunden ist über die Zuweisung des dahinterliegenden Makros. Hier hilft nur eine neue Schaltfläche zu erstellen oder die Makrozuweisung der Schaltfläche zu verändern.
Das was bei dir danach noch ablief konnte ich jetzt nicht verifizieren.
AW: USB Port prüfen und Dateiübertragung auf USB Stick
11.03.2018 13:23:57
Oberschlumpf
Hi Marvin,
so, da bin ich wieder.
Hier, versuch mal
https://www.herber.de/bbs/user/120329.xlsm
Eigentlich sollte die Datei grundsätzlich funktionieren wie gewünscht.
Trotzdem gibt es Einschränkungen:
1. automatisch wird ein leerer Stick nur erkannt, wenn das Userform(ular) gestartet wird
2. bei Betrieb des Userforms musst du auf den Button klicken, um einen leeren Stick zu suchen
3. es wird nicht automatisch ein Stick "sicher vom System" getrennt, und es wird auch nicht automatisch erkannt, wenn du den Stick entfernst
um das zu erreichen, müsste der Code aus diesem Beitrag eingefügt/angepasst werden https://www.herber.de/forum/archiv/1056to1060/1057596_USBStick_sicher_entfernen.html
das war mir aber zu viel Arbeit
Hilfts denn trotzdem?
Wenn du Probleme hast, meinen Code an deine Datei anzupassen, zeig uns per Upload deine Datei inklusive deinem Userform.
Niemand kennt deine Datei und kann Sie nicht nachbauen.
Ciao
Thorsten
Perfekt!
12.03.2018 14:12:24
Marvin
Hallo Thorsten, Hallo Anton,
ich bin meiner Vorstellung mit eurer Hilfe was näher gekommen und baue derweil die Userform entsprechend auf. Nach mehreren Testdurchläufen, kann ich aber sagen, dass es genau das ist, wonach ich gesucht hatte.
Vielen Lieben Dank und auch für die Mühe, die ihr euch gemacht habt.
Großes Lob.
Bis dahin!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige