3.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

ich habe ein Tabellenblatt mit dem Namen Montag, in diesen Tabellenblatt ist eine Tabelle wo jeder Spediteur einen Bereich hat in dem er seine Daten für Ladezeit findet. Diese Exceldatei wird dann über "einen" E-Mailverteiler an alle Spediteure versendet. Diese wiederrum pflegen ihre Fahrerdaten ein und schicken sie mir wieder zurück.

Das Problem ist hier das jeder Spediteur vom anderen weiß wie viele Fahrzeuge er hat.

Ist es denn möglich alles auszublenden abzuschicken und das jeder Spediteur mit seinem eingenen Passwort seinen Bereich einblenden lassen kann?

Also Beispiel:

Spediteur 1: Bereich einblenden mit Passwot 123
Spediteur 2: Bereich einblenden mit Passwot 456
Spediteur 3: Bereich einblenden mit Passwot 789

Ich: alle Bereiche einblenden mit Masterpasswort


Mit freundlichen Grüßen

energun222

17 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ja das ist per Makro möglich. Prüfe aber zuvor, ob bei deinen Kunden das Ausführen von Makros in Excel zugelassen ist.

Dann solltest du das Tabellenblatt mit einem Blattschutz versehen, damit man die Zeilen nicht per Hand einblenden kann (die Zellen, in denen Eingaben erfolgen sollen, müssen natürlich entsperrt werden).

Du kannst mal folgendes Makro probieren:

Sub einblenden()

Dim pw As String
Dim anfang As Long
Dim ende As Long

pw = InputBox("Bitte geben Sie Ihr Passwort ein:", "Eingabe Passwort")

Select Case pw
Case Is = "123" 'Passwort
anfang = 2 '1. Zeile des einzublendenden Bereichs
ende = 7 'letzte Zeile des einzublenden Bereichs
Case Is = "234"
anfang = 8
ende = 13
Case Is = "567"
anfang = 14
ende = 21
Case Is = "master"
anfang = 2
ende = 21
Case Else
'Abbruch wenn falsches Passwort eingegeben wurde
MsgBox "Das eingegebene Passwort ist falsch!", 64, "Fehler"
Exit Sub
End Select

'Blattschutz aufheben
ActiveSheet.Unprotect "135"

'Zeilen einblenden
ActiveSheet.Range(Cells(anfang, 1), Cells(ende, 1)).EntireRow.Hidden = False
'1. Zelle im eingeblendeten Bereich auswählen
ActiveSheet.Cells(anfang, 1).Select

'Blattschutz wieder einrichten
ActiveSheet.Protect "135"

End Sub


Die Passworte und Zeilennummern musst du natürlich entsprechend anpassen und auch das Passwort für den Blattschutz (in den Anführungszeichen bei ActiveSheet.Unprotect bzw. Protect).

Das Makro kannst du über eine Schaltfläche ausführen. Das Makro gehört ein ein allgemeines Modul.
Soll es beim Öffnen der Arbeitsmappe ausgeführt werden, dann ersetze
Sub einblenden()

durch
Private Sub Workbook_Open()

Dann ist der Code in das VBA Project der Arbeitsmappe einzufügen.

Wie du den Makro-Code selbst schützen kannst (alle Passworte sind ja im Klartext hinterlegt), liest du hier nach.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

ich glaub ich werd mich die Tage hier mal registrieren damit ich Dir dann auch mal die Datei zeigen kann. Hab das Gefühl das es knifflig wird. :-)

Mit freundlichen Grüßen

energun222
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

registrieren geht momentan nicht ;-(. Aber du kannst mal eine Beispieldatei bei einem Hoster deiner Wahl, z.B. hier, hochladen und den Link dann hier posten.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,

hab schon bemerkt das man keine E-Mail bekommt beim registrieren. :-(

Hier erst einmal die Datei. www23.zippyshare.com/v/7FUrGNEA/file.html

Passwort Blattschutz: 123
Passwort Arbeitsmappenschutz: 123

Der Code ist hier noch nicht eingepflegt. Der Code wäre für die ersten 4 Tabellenblätter der selbe also für Mo. - Do. , Fr. , Sa. , Feiertage.

Das Problem wird hier sein das ich im Code selber ja die Zeilen angebe die mit einem Passort sichtbar gemacht werden. Ich habe zum Beispiel Gruppierungen die je nach Anzahl der zu fahrenen Fahrzeuge geschlossen oder offen sind. Hab ich also wie in der Datei bei Mo. - Do. ganz oben bei MM nur 3 Fahrzeuge bleibt die Gruppierung geschlossen. Es müsste theoretisch so sein das nur das eingeblendet wird was per Gruppierung offen ist ansonsten mach er nähmlich die ganze Gruppierung auf.

Bereiche die auszublenden wären:


1. Bereich: MM+BSH

Bereiche: 7-26 und 152-171

2. Bereich: LBB+UK+GF

Bereiche: 28-47 und 49-68 und 70-89

3. Bereich: DO

Bereiche: 91-150

Es wird sicher knifflig. :-) Habe es gestern hin und her probiert aber es wollte nicht so richtig. Theoretisch müsste ich den Code selber ständig ändern. Mhh


Mit freundlichen Grüßen

energun222
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ich schaue mir das mal an und überlege mal, wie man das Problem lösen kann.

Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

schau mal, ob das so passt: KLICK MICH!

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,

also erstmal heftigst Danke :-) ne geile Arbeit! Hab da noch ein paar Verständnisfragen wenns nicht zu aufdringlich ist.

1. master Passwort ist OK um alles einzublenden hier sollte aber trotz alledem noch der Blattschutz erhalten bleiben da sonst meine Kollegen versehentlich Formeln löschen könnten und des wäre fatal.

2. für die Brereiche LBB, GF und UK reicht ein Paswort da des ein Spediteur ist

3. versuche bitte mal ein Bereich zu öffnen und arbeite dann an den Gruppierungen, hier wird dann gleich die komplette Gruppierungen geöffnet welche man dann erst wieder schließen müsste. nach dem ersten öffnen und alles wieder schließen funktioniert sie wieder ganz normal

4. wenn der Spediteur seinen Bereich bearbeitet hat und des speichert und wieder öffnet ist sein Bereich immer noch geöffnet.

Also mal als Beispiel:

Ich schicke die Datei an die Spediteure diese pflegen ihre Daten ein und schicken es mir wieder zurück. Ich pflege alles in meine Datei ein und nun fällt mir ein upps da brauchen wir doch noch einen LKW. Ich füge diesen also hinzu schicke die Datei wieder an die Spediteure, müssen die Spediteure wieder ihr Passwort eingeben oder ist des gleich offen? Denn wenn ich speichere und dann wieder öffne ist der vorher geöffnete Breich offen.

5. es sollte wenn möglich gleich die Passwortabfrage kommen also beim öffnen der Datei.

6. die wichtigste Frage

wie führe ich das weiter falls für einen Bereich doch irgendwann ein anderer Spediteur fährt. Heißt ich würd es gern verstehen lernen.


Hoffe das war jetzt nicht zu viel

Mit freundlich Grüßen

energun222
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

1.
um den Blattschutz beim Masterpasswort wieder zu ersetzen, ergänze das Makro wie folgt:

If strBereich = "master" Then
'hier wird alles eingeblendet, wenn das Master-Passwort eingegeben wird
.Unprotect "123" 'Blattschutz aufheben
.UsedRange.EntireRow.Hidden = False 'gewählten Bereich einblenden
.Outline.ShowLevels RowLevels:=1 'Gliederung im Level1 einblenden
.Protect "123" 'Blattschutz wieder einrichten <- ERGÄNZEN
Else


(2.) Ich habe ja für jeden (nach meinem Verständnis) Spediteur einen Bereichsnamen pro Blatt vergaben (mit Ergänzung 1 bis 4, da eine Bereichsname nur einmal pro Mappe vergeben wird). Hat ein Spediteur mehrere Bereiche, so markiere die Spalte A der betreffenden Bereiche und vergib einen Namen (siehe im Namensmanager z.B. MM_BSH). Dann wird nach der Passworteingabe der gesamte definierte Namensbereich eingeblendet.
(6. ) Hast du einen neuen Spediteur musst für diesen den entsprechenden Bereich definieren (Namen definieren) und im Makro die Select-Case-Anweisung entsprechend erweitern (siehe auch Kommentierung im Makro).
Lösche also die Bereiche, die doppelt sind im Namenmanager, markiere die entsprechenden Zellen in Spalte A und vergib einen Namen. Das Makro musst du dann natürlich entsprechend anpassen.

(3.) Da ich selten mit Gruppierungen arbeitete, werde ich mir das noch mal anschauen.

(4.) Du hast nicht gesagt, dass der Bereich wieder ausgeblendet werden soll ;-).
Füge folgenden Code in das VBA-Projekt der Arbeitsmappe ein:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim arrBlatt
Dim z As Long

'Array mit den Arbeitsblättern, die angesprochen werden sollen
arrBlatt = Array("Mo.-Do.", "Fr.", "Sa.", "Feiertage")

For z = 0 To 3
With Worksheets(arrBlatt(z))
.UsedRange.EntireRow.Hidden = True
.Range("A1:A6").EntireRow.Hidden = False
End With
Next z

'Arbeitsmappe wird gespeichert
ThisWorkbook.Save

End Sub


(5) Ergänze den Workbook_Open-Code am Schluss um folgende Zeile:
Call einblenden


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo :-)

ich hab des jetzt mal alles eingepflegt und oder abgeändert magst noch einmal drüber schauen? Irgendwie kann ich jetzt das Passwort einfach abbrechen und in die Bereiche schauen. Ist es einmal gespeichert bleibt es offen.

http://www100.zippyshare.com/v/4TLhhbDm/file.html
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

hier mal die überarbeitete Datei: KLICK!

Irgendwie kann ich jetzt das Passwort einfach abbrechen und in die Bereiche schauen.

Das kann ich der Beispieldatei aber nicht nachvollziehen.

Gruß

M.O.
...