Excel, Schreibschutz auf einzelne Zellen

  • #1
P

PhantomLord

Bekanntes Mitglied
Themenersteller
Dabei seit
10.05.2005
Beiträge
719
Reaktionspunkte
0
Ort
Saarlänner
Moin Leutz

Hab da mal ne Frage zu Excel 2003: wie kann ich in einem Arbeitsblatt nur einzelne Zellen zum Beschreiben zulassen? Die Sache mit dem Blattschutz ist ziemlich kompliziert und nervt außerdem jedesmal mit Paßwortanfrage, wenn ich in Zellen des geschützten Bereichs reinschreiben will. Gibt es da irgendeine Funktion für, wo ich sowas einfach einstellen kann?
 
  • #2
Hallo PhantomLord,

eigentlich geht das mit dem Blattschutz einfach.

Vorbereitung1: - Zellen pauschal gesperrt setzen -
a) mit Srtg+A alle Zellen des Blattes selektieren
b) Format-> Zellen -> Reiter Schutz-> Haken in->Gesperrt'
Vorbereitung2: - Zellen entsperren -
c) Zellen, die nicht geschützt werden solllen, markieren
d) Format-> Zellen -> Reiter Schutz-> Haken in->Gesperrt' rausnehmen

Blattschutz (betrifft die gesperrten Zellen) setzen
Extras->Schutz->Blatt...-> Haken in->Inhalte',->Objekte',->Szenarios', Kennwort leer lassen (ist sinnlos, da knackbar   ;) , dann gibt es auch keine PW-Nachfrage)

Gruß Matjes :)
 
  • #3
Hallo Matjes

danke dir, werd ich sofort mal testen. Aber geht sowas nich einfacher? So in der Art zugelassene Zellen markieren, Rest auf Knopfdruck sperren oder so ähnlich...? Aber so einfach macht es Microsoft ja den Leuten leider net.
 
  • #4
Hi Matjes, hab grade mal probiert, aber funzt leider net ganz so wie gewünscht: zwar kann ich jetzt nicht mehr ohne weiteres in die gesperrten Zellen reinschreiben, sobald ich irgendwas eingebe kommt aber sofort die Paßwortabfrage, obwohl ich keins vergeben habe. Kann dieser Effekt damit zusammenhängen, daß kein aktuelles SP2 für O2K3pro installiert ist?

Nachtrag: die Paßwortabfrage kommt nur, wenn Zellen angewählt werden, die innerhalb des Druckbereiches liegen. Bei Zellen unterhalb davon kommt ne Meldung Die Zelle oder das Diagramm, das Sie ändern möchten, ist schreibgeschützt
 
  • #5
@ Matjes
mir fällt grad noch was ein: gibt es in Excel und auch in Word 2k3 eine Möglichkeit, einzelnen Arbeitsblättern bzw. Dokumenten einen bestimmten Drucker fest zuzuweisen, unabhängig vom Standarddrucker des Betriebssystems?
Einzelne xls und doc sollen auf einen Nadeldrucker ausgegeben werden und der ist eben nicht Standarddrucker; der Druckerauswahldialog soll dabei nicht erscheinen (so mancher ist leider zu blöd, den richtigen Drucker einzustellen). Ich hab mich heut schon den ganzen Tag durch die Einstellungen durchgewühlt aber nix passendes gefunden.

Oder ist es vielleicht möglich, einer Verknüpfung von Word und Excel einen Drucker zuzuweisen?
 
  • #6
zu
die Paßwortabfrage kommt nur, wenn Zellen angewählt werden, die innerhalb des Druckbereiches liegen
Ist mir so noch nicht untergekommen. Werd es am Montag in der Firma auf Excel 2003 ausprobieren.

Hier hab ich nur Excel 97, und dem ist Wurst, ob ich im oder ausserhalb des Druckbereichs versuche etwas in eine Zelle einzugeben. Da gibt es immer die normale Antwort : ... Zelle gesperrt ... 

zu Drucken:
das Druckereignis kann man abfangen, den Drucker einstellen und ausdrucken, aber nur mit Makro  ;D

Gruß Matjes :)
 
  • #7
Matjes schrieb:
zu Drucken:
das Druckereignis kann man abfangen, den Drucker einstellen und ausdrucken, aber nur mit Makro ;D

Gruß Matjes :)
jo, danke ersma, sowas hab ich mir schon gedacht.
 
  • #8
Hallo PhantomLord,

für Excel hab ich dir mal ein Makro zusammengestellt, mit dem du das Gewünschte realisieren kannst.

Im Array BlaetterAufDrucker gibts du paarweise den Blattnamen/den gewünschten Druckernamen an.

Den Druckenamen kannst du mit dem Makro DruckernamenAusgeben  feststellen.
- Drucker im Druckdialog einstellen
- Makro DruckernamenAusgeben aufrufen
- aus der Inputbox den Druckernamen kopieren.

Der Makro Workbook_BeforePrint muß in der Code-Seite der Arbeitsmappe liegen (Diesearbeitsmappe).

Gruß Matjes :)

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  
  Dim ws As Worksheet, s_Blattname As String, x As Long
  Dim BlaetterAufDrucker As Variant
  Dim Old_Drucker As String, Spezieller_Drucker As String
  
 ->*** paarweise Angabe Blatt/Drucker,
 ->*** wenn Blatt nur auf einem bestimmten Drucker ausgegeben werden soll
 ->*** in diesem Fall nur Blatt->Tabelle1' und->Tabelle3'
  BlaetterAufDrucker = Array( _
                          Tabelle1, Druckername1, _
                          Tabelle3, Druckername2)
  
 ->*** Blattnamen des aktiven Blattes
  s_Blattname = ActiveSheet.Name
  
 ->*** Spezialbehandlung für Blatt?
  Spezieller_Drucker = 
  For x = LBound(BlaetterAufDrucker) To UBound(BlaetterAufDrucker) Step 2
    If s_Blattname = BlaetterAufDrucker(x) Then
      Spezieller_Drucker = BlaetterAufDrucker(x + 1)
      Exit For
    End If
  Next
  
  If Spezieller_Drucker <>  Then
    
    Old_Drucker = Application.ActivePrinter->alten Druckernamen sichern
    
   ->speziellen Drucker einstellen
    On Error Resume Next
    Application.ActivePrinter = Spezieller_Drucker
    If Err.Number <> 0 Then
      MsgBox (Err.Description & vbLf & _
        Drucker-> & Spezieller_Drucker &-> konnte nicht eingestellt werden.)
      Err.Clear
      On Error GoTo 0
      Exit Sub
    End If
    
    ws.PrintOut Copies:=1                   'Blatt ausdrucken
    Application.ActivePrinter = Old_Drucker->alten Druckernamen restaurieren
    Cancel = True                           'Druckdialog unterdrücken
  End If
  
End Sub

Code:
Sub DruckernamenAusgeben()
  Dim s_tmp As String
  s_tmp = InputBox( _
    Name des aktiven Druckers, _
    Name des aktiven Druckers, _
    Application.ActivePrinter)
End Sub
 
  • #9
Hallo Matjes

herzlichen Dank für deine Hilfe!!
Habe grade dein Makro gesehen, da hast du ja richtig Arbeit reingesteckt. jetzt muß ich allerdings nur noch zusehen, wie ich das zum laufen kriege, bin in dieser Hinsicht leider noch sehr unwissend. Aber ich werd einfach mal ein bischen rumprobieren, mal sehen was dabei rumkommt :)

Danke Danke Danke

gruß Uli
 
  • #10
Hallo Uli,

dann ein kleines Rezept  ;)

Am besten machst du vorher eine Kopie deiner Datei und probierst mit dieser.

====================================
Makro Workbook_BeforePrint
in Excel-Datei speichern (DieseArbeitsmappe)
====================================
a) betreffende Excel-Datei öffnen
b) mit Alt+F11 VB-Editor öffnen
c) im Projekt-Fenster
   unter VBAProject(betreffende Excel-Datei)
   mit einem Doppelklick auf->DieseArbeitsmappe'
   die Code-Seite der Arbeitsmappe öffnen
d) Das Makro dort hineinkopieren
e) Blattnamen/Druckernamen anpassen (siehe oben)
f) mit Alt+S speichern
g) mit Alt+Q VB-Editor schliessen
h) ausprobieren


====================================
Makro DruckernamenAusgeben
in Excel-Datei speichern (Modul)
====================================
a) betreffende Excel-Datei öffnen
b) mit Alt+F11 VB-Editor öffnen
c) mit rechter Maustaste im Projekt-Fenster  VBAProject(Dateiname) selektieren
   -> Einfügen -> Modul
  (es öffnet sich ein Modul-Fenster)
d) den Makro per copy and paste in dieses Modulfenster kopieren
e) Speichern mit Alt+S
f) VB-Editor schliessen mit Alt+Q
g) ausprobieren


Gruß Matjes :)
 
  • #11
Hallo Matjes

habe die Sache mit dem Makro so gemacht, wie du es beschrieben hast. dabei geschieht folgendes: Beim drücken von Strg-p erscheint eine Meldung Die Methode->ActivePrinter' für das Objekt->_Application' ist fehlgeschlagen. Drucker LQ-300 konnte nicht eingestellt werden.
Wenn ich dann auf OK drücke, erscheint der normale Druckerauswahldialog, wo ich dann den LQ-300 anwählen und drucken kann.

Schade, aber es klappt halt net. Trotzdem vielen Dank für deine Bemühungen

gruß Uli
 
  • #12
Hallo PhantomLord,

die Aussage des Makros : der interne Druckername LQ-300 ist beim System nicht bekannt.

Hast Du den Druckernamen mit dem Makro DruckernamenAusgeben() bestimmt und diesen dann in das Array eingetragen ?

Gruß Matjes :)
 
  • #13
Jo, hab ich, das eine liefert den String LQ-300 auf LPT1:, kann es vielleicht sein, daß ich dem zweiten Makro den kompletten String (inkl. auf LPT1:) mitgeben muß? Werds sofort testen.

Nachtrag: habs grad probiert, jetzt kommt keinerlei Meldung mehr aber es wird auch nix gedruckt, die Druckwarteschlange bleibt auch leer.
 
  • #14
Jo, so ist es. Deshalb auch der Extra-Makro. ;)

Gruß Matjes :)
 
Thema:

Excel, Schreibschutz auf einzelne Zellen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben