Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
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

Prüfen, vor öffen...

Prüfen, vor öffen...
Gegga
Guten Morgen...
Ich habe eine Mappe die im laufe eines Codes eine andere Mappe (Liegt auf einem gemeinsam genutzten Server) öffnet, etwas reinschreibt, speichert und schliesst.
Workbooks.Open ("G:\ROKU\AusgangsRechnLieferscheine.xls")
Worksheets("Lieferscheine").Activate
Jetzt hätte ich gerne folgendes (Hab über die Forumssuche schon ein paar Sachen gefunden, aber irgendwie will das nicht so wie ich es gerne hätte, bzw. fehlt mir einfach die Kenntnis, dies so umzubauen)
Call Prüfen
Prüfe ob Datei geöffnet und von wem. Wenn nicht von jemand anderem geöffnet, Datei öffnen, Sub verlassen und weiter mit meinem Code
Wenn geöffnet, zeige Userform mit Hinweis das geöffnet, und vom wem. Hinweis das Datei geschlossen werden muss um fortzufahren.
Bei Klick auf WEITER (Com-Button) in dieser "Hinweis UF" soll diese Abfrage, ob geöffnet, nochmals vorsichtshalber durchlaufen werden.
Dann weiter mit meinem ursprünglichen Code.
EFZ2 = Worksheets("Lieferscheine").Range("A65536").End(xlUp).Row
With Worksheets("Lieferscheine")
.Cells(EFZ2 + 1, 1) = wert1
.Cells(EFZ2 + 1, 2) = wert2
.Cells(EFZ2 + 1, 5) = wert3
.Cells(EFZ2 + 1, 3) = wert4
.Cells(EFZ2 + 1, 4) = wert5
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
End With
Kann oder will mir dabei jemand behilflich sein?
Gruß Gegga

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Prüfen, vor öffen...
06.07.2012 08:07:30
Gegga
Ich nochmal...
Vielleicht ein wenig verwirrend geschrieben, sorry!!!
Bevor die Datei geöffnet wird, soll geprüft werden ob die zu öffnende Datei ("G:\ROKU\AusgangsRechnLieferscheine.xls") von einem anderen Benutzer bearbeitet bzw. geöffnet ist!!!
Das
Workbooks.Open ("G:\ROKU\AusgangsRechnLieferscheine.xls")
soll durch den Sub Aufruf Call Prüfen ersetzt werden...
Ich glaube jetzt ist es ein bisschen verständlicher...Nochmals Sorry!!!
Gruß Gegga
AW: Prüfen, vor öffen...
06.07.2012 08:38:19
Gegga
Moin Franky...
Danke für den Link. Kannte ich schon...
Mit meinem "Wissenstand" in VBA weiss ich nicht wie ich das Wahr und Falsch "verwerten" soll und es fehlt immer noch die Angabe des Benutzers der die Datei evtl geöffnet hat...
Gruß Gegga
AW: Prüfen, vor öffen...
06.07.2012 09:09:40
Gegga
Hallo Matthias
Auch dir Danke für den Link...
Der tut zumindest mal annähernd das was ich möchte ;)
Allerdings, wenn die datei tatsächlich geöffnet ist, und ich in der MSGBOX auf ok klicke macht er ganz normal weiter und öffnet die Datei trotzdem (schreibgeschützt), und das möchte ich ja verhindern (wegen den DAU's :) ) die ohne den User zu informieren die Datei zu verlassen auf ok klicken...
Wie bekomme ich das hin, das bei klick auf weiter in der MSGBOX die Sub nochmals durchlaufen wird, meinetwegen so lange, wieder und wieder, bis die benutzte Datei geschlossen ist?
Bei einer UF wüsste ich es ja, aber bei ner MSGBOX?
Vielen Dank für weitere Hilfe..
Greetz Gegga
Anzeige
AW: Prüfen, vor öffen...
06.07.2012 11:10:14
Rudi
Hallo,
so in der Art:
Sub TestMakro()
Dim strFile As String
strFile = "c:\test.xls"
Pruefen strFile
MsgBox "OK"
End Sub
Sub Pruefen(strFileToOpen As String)
Do While IsFileOpen(strFileToOpen)
If MsgBox(strFileToOpen & " ist von " & LastUser(strFileToOpen) & " geöffnet." _
& vbLf & "Bitte schließen lassen.", _
vbOKCancel + vbInformation, "Datei geöffnet") = vbCancel Then End
Loop
End Sub
Function IsFileOpen(strFullPathFileName As String) As Boolean
'// VBA version to check if File is Open
'// We can use this for ANY FILE not just Excel!
'// Ivan F Moala
'// http://www.xcelfiles.com
Dim hdlFile As Long
'// Error is generated if you try
'// opening a File for ReadWrite lock >> MUST BE OPEN!
On Error GoTo FileIsOpen:
hdlFile = FreeFile
Open strFullPathFileName For Random Access Read Write Lock Read Write As hdlFile
IsFileOpen = False
Close hdlFile
Exit Function
FileIsOpen:
'// Someone has it open!
IsFileOpen = True
Close hdlFile
End Function
Function LastUser(strPath As String) As String
'// Code by Helen from http://www.
_
visualbasicforum.com/index.php?s=
'// This routine gets the Username of the File In Use
'// Credit goes to Helen for code & Mark for the idea
'// Insomniac for xl97 inStrRev
'// Amendment 25th June 2004 by IFM
'// : Name changes will show old setting
'// : you need to get the Len of the Name stored just before
'// : the double Padded Nullstrings
Dim strXl As String
Dim strFlag1 As String, strflag2 As String
Dim i As Integer, j As Integer
Dim hdlFile As Long
Dim lNameLen As Byte
strFlag1 = Chr(0) & Chr(0)
strflag2 = Chr(32) & Chr(32)
hdlFile = FreeFile
Open strPath For Binary As #hdlFile
strXl = Space(LOF(hdlFile))
Get 1, , strXl
Close #hdlFile
j = InStr(1, strXl, strflag2)
#If Not VBA6 Then
'// Xl97
For i = j - 1 To 1 Step -1
If Mid(strXl, i, 1) = Chr(0) Then Exit For
Next
i = i + 1
#Else
'// Xl2000+
i = InStrRev(strXl, strFlag1, j) + Len(strFlag1)
#End If
'// IFM
lNameLen = Asc(Mid(strXl, i - 3, 1))
LastUser = Mid(strXl, i, lNameLen)
End Function

Gruß
Rudi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige