Workbook für Range / Permissions
09.01.2013 19:17:39
Hans-Jürgen
klasse Forum hier ! Nachdem meine erste Frage heute morgen so schnell beantwortet wurde, konnte ich am Code weiterarbeiten und hab undankbarerweise gleich zwei neue Fragen ;-))
Ich gehe davon aus, dass das für euch ein Klacks ist, daher beide in einem Fred.
Ausgangslage: Ich lasse den Code aus einem Workbook aus laufen, dem ich den Namen WData zugewiesen habe. Im Code öffne ich ein Workbook WStat, was dann auch minimiert wird. In WData gibts ein Sheet "Daten" (TData) bzw. in WStat gibts das Sheet "Statistik" (TStat). Ich hole Daten rüber, indem ich sage
TData.cells(x,y)=TStat.cells(x,y) - natürlich arbeite ich mit FOR und WITH.
1. Frage: In TData brauche ich auch Range-Befehle, für ClearContents und Anzahl der leeren Felder. Nun kam es schon vor, dass er den Range-Befehl auf das falsche Sheet angewendet hat. Ich könnte zwar vor Range noch Sheets("Daten"). davorschreiben, aber wenn das Makro "gedanklich" im anderen Workbook ist, gibts einen Fehler, da es das Sheet dort nicht gibt. Ich will vor dem Range-Befehl sowas machen wie ActiveWorkbook = WData, aber das klappt nicht...
2. Frage: Die WStat wird in bestimmten Fällen im späteren Programmablauf auch mit Daten beschrieben. Theoretisch könnte es sein, dass ein anderer User diese parallel gerade offen hat. Aus diesem Grunde möchte ich vor dem Schreiben dies abprüfen. Falls jemand anderes die Datei geöffnet hat, soll dies angezeigt werden, wenn möglich sogar dessen Userbezeichnung. (Aus anderen Gründen soll die WStat nicht "freigegeben" sein)
Im der VBA-Hilfe finde ich was zu Permissions. Allerdings schon die ersten drei Zeilen aus der Hilfe
Dim irmPermission As Office.Permission
Dim irmUserPerm As Office.UserPermission
Set irmPermission = ActiveWorkbook.Permission
führen bei mir schon zu einem Fehler, habe dabei nur "ActiveWorkbook" durch "WStat" ersetzt.
Wie kann ich rausbekommen, ob die geöffnete Datei schreibgeschützt ist, und wenn ja, durch wen ?
Herzlichen Dank im voraus
Hans-Jürgen
P.S. für die Nordlichter unter euch noch eine philosophische Betrachtung:
Range.ClearContens auf dem falschen Sheet ist Schiet ;-))