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

Erweiterung der Info @ UweD

Erweiterung der Info @ UweD
05.07.2014 06:01:21
Bernd
Guten Morgen liebe Excelianer!
Aus irgendeinem Grund kann ich auf meine Eigene gestellte Forumsfrage nicht mehr antworten, ich finde diesen auch nicht in der Forumsliste.
Leider weiß ich auch nicht, wie man einen Link zu meinem alten Beitrag vom 28.06.2014, welcher sich "Onfo ob gedruckt wurde" nannte.
Ich danke mal UweD, der probiert hat, mir zu helfen. Problem ist nur, es kommt jedes mal eine Fehlermeldung und ich habe keine Ahnung warum.
Habe den Code von Uwe eingefügt:
~ Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim PZ As Range Dim UserN$, UserId$ UserN = Application.UserName UserId = Environ("Username") Set PZ = ActiveSheet.Range("A1") With PZ If TypeName(ActiveSheet) = "Worksheet" Then If Not .Comment Is Nothing Then If InStr(.Comment.Text, "gedruckt von: ") > 0 Then If MsgBox("Das aktuelle Tabelleblatt wurde bereits " _ & vbCrLf & .Comment.Text & " ," & vbCrLf _ & vbCrLf & "soll es noch einmal gedruckt werden?" _ , vbYesNo Or vbExclamation Or vbDefaultButton1, _ "Bereits gedruckt") _ = vbNo Then Cancel = True End If Else .AddComment .Comment.Text Text:="gedruckt von: " & vbCrLf & UserN & " / " & UserId End If End If End With End Sub ~
Habe mal eine kleine Testversion meiner Datie hochgeladen wo, wenn gedruckt wurde, in Zelle A51 die benötigte Info kommt.

Die Datei https://www.herber.de/bbs/user/91388.xlsm wurde aus Datenschutzgründen gelöscht


Wichtig für die Helfer ist nur, man muss mittels Button zuerst ein neues Formular anlegen, dieses nach Vorgabe ausfüllen (anklicken rechts des Formulares der retslichen Buttons) um überhaupt drucken zu können.
Mein Wunsch wäre, dass eben in Zelle A51 oder der MsgBox bei "Wurde bereits ausgedruckt" auch dabei steht, von welchem User also "Wurde bereits ausgedruckt von ..."
Entschuldigung nochmals dafür das ich hier doppelt Poste, aber ich habe keine Ahnung wie ich den alten Beitrag weiter führen kann.
Dann Danke vorab und schönes Wochenende allen,
lg Bernd

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erweiterung der Info @ UweD
05.07.2014 06:05:22
Bernd
Hi nochmals,
sorry müsste heissen:
"Info ob gedruckt wurde"
Nacchtrag:
Mein Wunsch ist in erster Linie dass in Zelle A51 steht, wer gedruckt hat. Wenn die Info zusätzlich in der MsgBox kommt, wäre es toll, aber kein muss!
Thx und lg Bernd

AW: Erweiterung der Info @ UweD
05.07.2014 06:05:43
Bernd
Ist offen LOL

AW: Erweiterung der Info @ UweD
05.07.2014 06:44:28
Matthias
Hallo
Unter Deine Beiträge findest Du auch Deine Beiträge
Ich meine mich zu erinnern das Du einen Vorschlag für dem Namen des Nutzers schon bekommen hast.
Will aber auch nicht weiter recherchieren. Das kannst Du selbst machen ;-)
Das könnte in Deinem Code fehlen
Application.UserName
oder
Environ("Username")
Gruß Matthias

Anzeige
AW: Erweiterung der Info @ UweD
05.07.2014 06:49:37
Bernd
Hallo Matthias!
Danke erstaml für Deine Antwort. Ja, unter meine Beiträge finde ich mich auch, jedoch gibt es dort keine Möglichkeit - so wie hier - einer Texteingabe!
Freut mich wenn Du Dich an etwas erinnerst, aber ich habe bis dato noch keinen Vorschlag, außer den VBA Code von UweD, erhalten.
Und nochmals thx für Deinen Vorschlag, aber leider bin ich überhaupt kein VBA Profi um Deinen Vorschlag in die Wirklichkeit umusetzen, da fehlt mir das Know How für.
Hoffe es findet sich jemand, der mir weiter helfen kann.
Liebe Grüße wünscht allen Bernd

der Code von UweD fehlt aber in der Datei
05.07.2014 07:43:16
UweD
Hallo
Welchen Fehler erhälst Du denn?
Ich habs mal so getestet
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'    With ActiveSheet
'        If .Cells(51, 1).Value = "Wurde bereits ausgedruckt" Then
'            If MsgBox("Das aktuelle Tabelleblatt wurde bereits gedruckt, " _
'                               & vbCrLf & "soll es noch einmal gedruckt werden?" _
'                               , vbYesNo Or vbExclamation Or vbDefaultButton1, _
'                               "Bereits gedruckt") _
'                               = vbNo Then Cancel = True
'        Else
'            .Cells(51, 1).Value = "Wurde bereits ausgedruckt"
'        End If
'    End With
Dim PZ As Range
Dim UserN$, UserId$
UserN = Application.UserName
UserId = Environ("Username")
Set PZ = ActiveSheet.Range("A1")
With PZ
If TypeName(ActiveSheet) = "Worksheet" Then
If Not .Comment Is Nothing Then
If InStr(.Comment.Text, "gedruckt von: ") > 0 Then
If MsgBox("Das aktuelle Tabelleblatt wurde bereits " _
& vbCrLf & .Comment.Text & " ," & vbCrLf _
& vbCrLf & "soll es noch einmal gedruckt werden?" _
, vbYesNo Or vbExclamation Or vbDefaultButton1, _
"Bereits gedruckt") _
= vbNo Then Cancel = True
End If
Else
On Error Resume Next
.Comment.Delete
.AddComment
.Comment.Text Text:="gedruckt von: " & vbCrLf & UserN & " / " & UserId
End If
End If
End With
End Sub
Userbild
Gruß Matthias

Anzeige
AW: der Code von UweD fehlt aber in der Datei
05.07.2014 09:37:35
UweD
Hallo Matthias!
Den Code von Uwe habe ich deswegen nicht drinnen, da es nicht funkionierte.
Als Fehler erhielt ich Laufzeitfehler 1004.
Im VBA Code ist dann .AddComment gelb hinterlegt.
Habs jetzt mit Deinem probiert, ist alles beim alten so wie es war. Jedoch in Zelle A51 und/oder MsgBox steht bei mir nichts von einem User.
Oder mache ich was falsch?
lg Bernd

AW: der Code von UweD fehlt aber in der Datei
05.07.2014 12:26:04
UweD
Hallo,
Du hast da einen Blattschutz in Deiner Bsp.-mappe,
der verhindert bei mir das Matthias' Code funktioniert;
wenn Du den in der Drucken-Proc auhebst, wird der Comment erstellt...
Sub Drucken()
 '...
  If bolDrucken = True Then
    ActiveSheet.Unprotect
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, _
          preview:=True 'Preview auf False setzen wenn alles funktioniert
    ActiveSheet.Protect
    Range("AW7").Select
   
  End If
End Sub
und vielleicht das hier mal durchlesen...
Gruß,

Anzeige
@ Mullit --> auch Danke (owT)
06.07.2014 06:15:27
Bernd
lg Bernd

ich kann Dir leider nicht weiterhelfen ...
05.07.2014 20:27:03
Matthias
Hallo
Oder mache ich was falsch?
Wahrscheinlich!
Bei mir wird die Zelle gefüllt.
001

 ABCDEFGHIJKLMNO
50               
51Wurde bereits ausgedruckt              
52               


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Das hat auch nichts mit dem Blattschutz zu tun, denn die Zelle ist ja nicht geschützt
Gruß Matthias

Anzeige
AW: der Code von UweD fehlt aber in der Datei
05.07.2014 23:42:53
UweD
Hallo nochmal,
hab nochmal reingesehen..
In der alten Version hatte ich "Commentare in den Zellen" verwendet, damit die Inhalte in den Zellen selbst unverändert bleiben. Das hab ich jetzt umgestellt....
Jetzt wird alles in der Zelle A51 reingeschrieben.
- Username aus Excel
- Benutzername vom Netzwerk
- Computername
Bei Bedarf kannst du das Passwort aktivieren.
Beim Reinschreiben in die Zelle wurde das ChangeEvent ausgelöst, das wird jetzt kurz angehalten und wieder gestartet.
- - -
Ich hab den Zeilenumbruch aus der Zelle A51 rausgenommen, damit der Text auch vollständig angezeigt wird.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim PZ As Range
Dim UserN$, UserId$, UserPc$
On Error GoTo Fehler
UserN = Application.UserName
UserId = Environ("Username")
UserPc = Environ("Computername")
Set PZ = ActiveSheet.Range("A51") 'Zielzelle
With PZ
If TypeName(ActiveSheet) = "Worksheet" Then
If InStr(.Value, "gedruckt von: ") > 0 Then
If MsgBox("Das aktuelle Tabelleblatt wurde bereits " _
& vbCrLf & .Value & " ," & vbCrLf _
& vbCrLf & "soll es noch einmal gedruckt werden?" _
, vbYesNo Or vbExclamation Or vbDefaultButton1, _
"Bereits gedruckt") _
= vbNo Then Cancel = True
Else
Application.EnableEvents = False 'unterbindet das ChangeEvent
'ActiveSheet.Unprotect Password:="abc" 'wenn Passwort verwendet wurde
.Value = "gedruckt von: " & UserN & " / " & UserId & " am PC " & UserPc
'ActiveSheet.Protect Password:="abc"
Application.EnableEvents = True ' Events wieder einschalten
End If
End If
End With
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
https://www.herber.de/bbs/user/91394.xlsm

Anzeige
@ Uwe D & Matthias L -->Funktioniert !!!
06.07.2014 05:18:40
Bernd
Hallo Uwe
Wunderbar!!!
Es funktioniert nun exakt wie gewünscht. Danke für Deine Hilfe und einen schönen sommerlichen Sonntag, Dir und Deinen vertrauten.
Für Mattias:
Auch Dir Danke ich für Deine Bemühungen und wünsche auch Dir selbiges wie Uwe.
Nur noch zur Info: Ja, bei mir wurde ja auch eingetragen dass gedruckt wurde, leider ohne Benutzer, wer es druckte, aber es ist nun egal, es klappt ja.
THX und schöne Grüße aus dem heissen und sonnigen Klagenfurt,
Bernd

Funktioniert, aber nur beim ersten Druck
08.07.2014 04:58:34
Bernd
Hallo an alle die geholfen haben, und die es vielleicht noch werden!
Habe nun alle Vorschläge, Tips usw. in die Tat umgesetzt und ich muss sagen,
es klappt Wunderbar.
Aufgefallen ist mir jedoch, dass in Zelle A51 oder der MsgBox immer nur derjenige Angezeigt bzw. eingetragen wird, der die Tabelle als erstes ausgedruckt hat.
Das heißt, wenn A als erstes die Tabelle ausgedruckt hat, B etwas ändert und erneut ausdruckt, bleibt trotzdem A als ausdrucker vermerkt.
Ist dies eventuell auch möglich so zu ändern das immer derjenige angezeigt wird, der als letzter ausdruckte?
Hab zwar gestern sehr viel Zeit damit verbracht um aus meinen alten Excelvorlagen eventuell einen passenden VBA Code zu finden und einzusetzen, was jedoch - so wie meist - kläglich scheiterte.
Deshalb wende ich mich, auch wenn es schon zum gefühlten 1.000 Mal ist, an Euch und sag schon mal danke allen im Voraus und hoffe ich bin nicht zu lästig mit meinen Wünschen.
lg Bernd

Anzeige
Funktioniert, aber nur beim ersten Druck
08.07.2014 04:58:51
Bernd
Hallo an alle die geholfen haben, und die es vielleicht noch werden!
Habe nun alle Vorschläge, Tips usw. in die Tat umgesetzt und ich muss sagen,
es klappt Wunderbar.
Aufgefallen ist mir jedoch, dass in Zelle A51 oder der MsgBox immer nur derjenige Angezeigt bzw. eingetragen wird, der die Tabelle als erstes ausgedruckt hat.
Das heißt, wenn A als erstes die Tabelle ausgedruckt hat, B etwas ändert und erneut ausdruckt, bleibt trotzdem A als ausdrucker vermerkt.
Ist dies eventuell auch möglich so zu ändern das immer derjenige angezeigt wird, der als letzter ausdruckte?
Hab zwar gestern sehr viel Zeit damit verbracht um aus meinen alten Excelvorlagen eventuell einen passenden VBA Code zu finden und einzusetzen, was jedoch - so wie meist - kläglich scheiterte.
Deshalb wende ich mich, auch wenn es schon zum gefühlten 1.000 Mal ist, an Euch und sag schon mal danke allen im Voraus und hoffe ich bin nicht zu lästig mit meinen Wünschen.
lg Bernd

Anzeige
wird ja auch nur 1x angesprochen ...
08.07.2014 09:00:40
Matthias
Hallo
Im Code wird ja auch nur einmal der Else-Zweig angesprochen.
Schau mal in Dein Workbook_BeforePrint
Das kannst Du so (mit MsgBox) prüfen:
 If InStr(.Value, "gedruckt von: ") > 0 Then
MsgBox "IF-Zweig"
If MsgBox("Das aktuelle Tabelleblatt wurde bereits " _
& vbCrLf & .Value & " ," & vbCrLf _
& vbCrLf & "soll es noch einmal gedruckt werden?" _
, vbYesNo Or vbExclamation Or vbDefaultButton1, _
"Bereits gedruckt") _
= vbNo Then Cancel = True
Else
MsgBox "Else-Zweig!"
Application.EnableEvents = False 'unterbindet das ChangeEvent
'ActiveSheet.Unprotect Password:="abc" 'wenn Passwort verwendet wurde
.Value = "gedruckt von: " & UserN & " / " & UserId & " am PC " & UserPc
'ActiveSheet.Protect Password:="abc"
Application.EnableEvents = True ' Events wieder einschalten
End If


Du müsstest also dafür sorgen, das ...
.Value = "gedruckt von: " & UserN & " / " & UserId & " am PC " & UserPc

... auch dann neu eingetragen wird wenn jemand ein 2x Drucken wählt.
Gruß Matthias

Anzeige
AW: wird ja auch nur 1x angesprochen ...
08.07.2014 17:30:00
Bernd
Hallo lieber Matthias und Rest der Excelianer
Sage erstmals recht herzlichen Dank für Deine Mühe und Not mir zu Versuchen etwas näher zu bringen.
Leider muss ich Dir bzw. allen aber Mitteilen, für das was Du mir gepostet hast, reicht mein Wissen wirklich nicht aus.
Hab es mehrmals gelesen und probiert, es irgendwie in meinem vorhandenen Code zu implementieren, bislang ohne Erfolg.
Überdies hast Du zum Schluss seltsam gepostet wenn jemand 2 Mal Drucken anwählt. Ich möchte haben, dass immer derjenige als letzter - in Zelle A51 und MsgBox - eingetragen wird, der das Excelsheet ausgedruckt hat.
Klartext:
Max druckt aus dann soll in Zelle A51 und der Msg Box stehen: Max
Leo druckt es nach Max aus dann soll in Zelle A51 und der Msg Box stehen: Leo
usw.
Trotzdem Danke allen die sich meiner den Kopf zerbrechen. Bin zwar aus Klagenfurt (Ö) wünsche aber Euch deutschen heute im Fussballspiel alles gute und viel Erfolg.
lg Bernd

Anzeige
so sollts es wie gewünscht funktionieren ...
09.07.2014 07:55:21
Matthias
Hallo

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim PZ As Range
Dim UserN$, UserId$, UserPc$
On Error GoTo Fehler
UserN = Application.UserName
UserId = Environ("Username")
UserPc = Environ("Computername")
Set PZ = ActiveSheet.Range("A51") 'Zielzelle
With PZ
If TypeName(ActiveSheet) = "Worksheet" Then
If InStr(.Value, "gedruckt von: ") > 0 Then
If MsgBox("Das aktuelle Tabelleblatt wurde bereits " & vbCrLf & .Value  _
& " ," & vbCrLf & vbCrLf & "soll es noch einmal gedruckt werden?", vbYesNo Or vbExclamation Or vbDefaultButton1, "Bereits gedruckt") = vbNo Then
Cancel = True
Else
.Value = "gedruckt von: " & UserN & " / " & UserId & " am PC " & UserPc
End If
Else
Application.EnableEvents = False 'unterbindet das ChangeEvent
'ActiveSheet.Unprotect Password:="abc" 'wenn Passwort verwendet wurde
.Value = "gedruckt von: " & UserN & " / " & UserId & " am PC " & UserPc
'ActiveSheet.Protect Password:="abc"
Application.EnableEvents = True ' Events wieder einschalten
End If
End If
End With
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Gruß Matthias

@ Matthias --> DANKE
09.07.2014 10:41:45
Bernd
Hallo Matthias!
Danke Dir für Deine Hilfe. Hab es noch nicht getestet, Denke aber bei Deinem klugen Köpfchen wird es schon funktionieren (sonst hören wir uns eh nochmals :-)
lg Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige