Netzlaufwerk verbinden und wieder trennen, dazwischen copy

Moderator: ModerationP

Netzlaufwerk verbinden und wieder trennen, dazwischen copy

Beitragvon KalleP » 19. Mai 2022, 09:06

Schönen juten Morjen!

Mit folgendem Code verbinde und trenne ich ein Netzlaufwerk und führe dazwischen Kopiervorgänge aus:

Code: Alles auswählen
Public Function NetzlaufwerkVerbinden()
    'Mappt ein Netzlaufwerk
    Dim objNetzwerk As Object
    Set objNetzwerk = CreateObject("WScript.Network")
    objNetzwerk.mapnetworkdrive "A:", "\\...."
    Set objNetzwerk = Nothing
End Function
'###############################################
Public Function NetzlaufwerkTrennen()
    'Trennt das Netzlaufwerk wieder
    Dim objNetzwerk As Object
    Set objNetzwerk = CreateObject("WScript.Network")
        objNetzwerk.removenetworkdrive "A:"                              '<--hier markiert er beim Debuggen
    Set objNetzwerk = Nothing
End Function
'###############################################
Function KopierenVonAnachB(A As String, B As String) As Boolean
Dim FS As Object

Set FS = CreateObject("scripting.filesystemobject")
FS.CopyFile A, B

'Wurde datei jetzt auch kopiert?
If Dir(B) = "" Then
    KopierenVonAnachB = False
Else
    KopierenVonAnachB = True
End If



Jetzt habe ich hier noch folgende Probleme:
1) Falls es doch noch jemand gibt, der A: schon vergeben hat, gibt es eine Fehlermeldung ("Der lokale Gerätename wird bereits verwendet") und er springt mir raus.
Für den Fall würde ich gerne zuvor abfragen, ob der Buchstabe vergeben ist und ansonsten im Alphabet einen Buchstaben weiter gehen...und so weiter. Den gewählten Laufwerksbuchstaben müsste ich dann irgendwo zwischenparken, damit ich die Dateien kopieren kann und später auch das richtige Laufwerk wieder trennen kann.

2) Das wohl wichtigere Problem: Nach den Kopiervorgängen soll das Netzwerk getrennt werden, allerdings erhalte ich stets die Fehlermeldung ("Es warten noch offene Dateien oder Anforderungen auf dieser Netzwerkverbindung.")
Meine Idee war, dass eventuell der Kopiervorgang noch nicht ganz abgeschlossen ist. Habe zum Test mal eine msgbox nach dem Kopieren und vor dem Trennen eingebaut und absichtlich mal 15 Sekunden gewartet. Das bringt aber nichts und es kommt munter die gleiche Meldung. Was kann ich hier tun? Dateien auf dem Verzeichnis werden nicht geöffnet, einzige Aktion ist das Kopieren. Wenn ich das Kopieren auskommentiere funktioniert es auch mit dem Trennen wieder ohne Probleme.

Ich würde mich über Euren Rat freuen,
Kalle
KalleP
 

Re: Netzlaufwerk verbinden und wieder trennen, dazwischen co

Beitragvon Beaker s.a. » 19. Mai 2022, 10:56

Zu 1)
Das FSO stellt die Methode "DriveExists" zur Verfügung.
Vielleicht mal den Objekt-Explorer bemühen.
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1317
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: Netzlaufwerk verbinden und wieder trennen, dazwischen co

Beitragvon sGast » 19. Mai 2022, 11:40

Hallo,
Gegenfrage:
Wozu benötigst du ein"gemapptes" Netzlaufwerk.
Sollte ein Kopieren über den UNC-Pfad nicht zielführender sein?

Gruß Steffen
sGast
 

Re: Netzlaufwerk verbinden und wieder trennen, dazwischen co

Beitragvon Gast » 19. Mai 2022, 11:42

Du könntest doch mit absoluten Pfaden arbeiten, da musst Du keine Laufwerke verbinden.
Gast
 

Re: Netzlaufwerk verbinden und wieder trennen, dazwischen co

Beitragvon knobbi38 » 19. Mai 2022, 11:50

Hallo Kalle,

für das Mappen hast du doch schon den Netzwerkpfad. Warum den nicht direkt verwenden?

Unabhängig davon, wenn du schon mit dem FSO kopierst, kannst du dir
Code: Alles auswählen
'Wurde datei jetzt auch kopiert?
If Dir(B) = "" Then
    KopierenVonAnachB = False
Else
    KopierenVonAnachB = True
End If
komplett sparen - es wird einfach der Fehler-/Errorcode abgefragt.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4226
Registriert: 02. Jul 2015, 14:23

Re: Netzlaufwerk verbinden und wieder trennen, dazwischen co

Beitragvon KalleP » 19. Mai 2022, 12:33

Hallo,

erstmal nix, auf einmal so viele. Das überfordert mich ja fast. :D

Das Kopieren funktioniert komischerweise nur bei gemappten Netzlaufwerken. Es handelt sich um einen Onlinespeicher, da führt er das sonst nicht aus. Warum auch immer...

Wenn ich den Laufwerksbuchstaben vergebe geht es aber. Daher werde ich wohl den Weg gehen müssen.
KalleP
 

Re: Netzlaufwerk verbinden und wieder trennen, dazwischen co

Beitragvon knobbi38 » 20. Mai 2022, 11:19

Hallo,

Es handelt sich um einen Onlinespeicher

Damit kann man auch viel anfangen. :roll: Wenn man wüßte, um was für einen "Onlinespeicher" es sich handelt, könnte man ja vielleicht helfen.

Wenn du die Lösung mit der Krücke weiter verfolgen möchtest:
Zum Abfragen eines Laufwerksmappings kannst du WshNetwork.EnumNetworkDrives oder die Drivesauflistung des FSO durchgehen.
Zu deiner Info: fso.copyfile arbeitet synchon, daß heißt, es kommt erst zurück, wenn die Datei kopiert worden ist. Möglicherweise hast du ein Problem mit einem Virenscanner oder so. Da du das Mapping selber initiiert hast, könntest du auch RemoveNetworkDrive mit der Argument bForce verwenden, oder du wartest in einer Schleife.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4226
Registriert: 02. Jul 2015, 14:23


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 34 Gäste