Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Datei Personengebunden öffnen
#1
Guten Morgen,

ich habe ein neues Projekt.
Ich bin verantwortlich für die Zusammenführung und Auswertung aller Statistiken der verschiedenen Bereiche unserer Firma.

Momentan stört mich son bisschen daran das jede Abteilung seine eigenen Statistiken auf seinem Laufwerk nutzt, und ich muss mir dann immer die Zahlen über Bezüge sammeln.

Jetzt kam ich auf den Gedanken aus diesen ganzen Einzeldateien eine große zu machen.
Ansich ja kein Problem.

Jetzt aber meine Frage, um das für die Einzelnen Personen besser zu händeln, ist es auf einfache Art möglich das bei öffnen der Datei ein Fenster auf geht, die Person bzw Abteilung muss angeben wer er is, und dann geht das entsprechende Datenblatt auf und derjenige kann seine Zahlen eingeben. Im Idealfall sogar so, das man die anderen Blätter garnicht sieht.

Achso, zu bedenken wäre dabei noch, das wir leider  verschiedene Excel Versionen haben. Ich glaub die älteste ist 2003.
Antworten Top
#2
Hallo,

dein Vorhaben wäre mit VBA sicher machbar - allerdings kann ich dir da mangels VBA-Kenntnis nicht weiterhelfen.

Ich werfe aber mal einen anderen Hut in den Ring: Du setzt XL2010 ein und da könntest du evtl. das Addin Power Query installieren und die Daten damit 'einsammeln'.

Schau dir dazu mal diese Seite an - evtl. ist das eine Alternative zu VBA.
Gruß
Peter
Antworten Top
#3
Danke für die Antwort.

Aber mir gehts da um was anderes, in der Vergangenheit war es öfter mal so, das jemand seine datei umbennent, oder in nen anderen Ordner schiebt. Und schon stehn meine Auswertungen ohne Daten da. Oder anderer Fall, jetzt zum Jahreswechsel mußte ja alles neu gemacht werden, und ich sitz da und muß mir wieder alle Bezüge verlinken.  Und das will ich umgehen.

Eine Datei, und wenn es denn ohne weiteres geht, jeder Benutzer sieht sofort seinen b ereich.
Antworten Top
#4
Hallo,

ok, das
Zitat:in der Vergangenheit war es öfter mal so, das jemand seine datei umbennent, oder in nen anderen Ordner schiebt
ist natürlich ein KO-Kriterium, wobei ich demjenigen auf die Finger hauen würde. Smile

In dem Fall ist das Zusammenführen in eine Datei vermutlich die bessere Alternative - da werden sich die VBA-Experten sicher bald melden.
Gruß
Peter
Antworten Top
#5
Hi,

(30.03.2017, 07:14)Peter schrieb: dein Vorhaben wäre mit VBA sicher machbar - allerdings kann ich dir da mangels VBA-Kenntnis nicht weiterhelfen.

hier ist ein Beispiel-Code für "DieseArbeitsmappe":
Option Explicit

Private Sub Workbook_Open()
  Dim s As String
 
  s = VBA.Environ("Username")
 
  'Datei generell schreibgeschützt öffnen
  'Ausdruck.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
  If Environ("username") <> "rab" Then
     Application.DisplayAlerts = False
     Workbooks.Open ThisWorkbook.FullName, , True
  End If
 
  With ThisWorkbook
     Select Case s                     'Tabellen, Bereiche und Formularschaltflächen ausblenden, je nach Account
     Case Is = "rab", "har", "smi":
        For i = 1 To Sheets.Count
           .Sheets(i).Visible = True   'alle Tabellen einblenden
           .Sheets(i).Unprotect 'Password:="test"
        Next i
        .Sheets("Tabelle1").Visible = True
        '.Range("1:46").EntireRow.Hidden = False     'definierter Bereich einblenden
        '.Range("48:60").EntireRow.Hidden = True     'definierter Bereich ausblenden
        '.Sheets("Tabelle2").DrawingObjects("Button 1").Visible = True    'Button einblenden
        .Sheets("Tabelle1").Range("K1:K3") = ""      'Bereich leeren

     Case Is = "sl", "spe", "aml":
        For i = 1 To Sheets.Count
           .Sheets(i).Visible = True
        Next i
        .Sheets("Tabelle1").Visible = True
     Case Is = "tig":
        For i = 1 To Sheets.Count
           .Sheets(i).Visible = False                'alle Blätter ausblenden
           .Sheets(i).Protect 'Password:="Test"
        Next i
        .Sheets("Tabelle1").Visible = True           'nur Tabelle1 einblenden
     Case Is = "tim", "smi", "bs", "brm":
        For i = 1 To Sheets.Count
           .Sheets(i).Visible = False
        Next i
        .Sheets("Tabelle3").Visible = True           'Tabelle3 einblenden
     Case Else
        'für alle anderen Datei schreibgeschützt öffnen
        'Ausdruck.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
        Application.DisplayAlerts = False
        Workbooks.Open ThisWorkbook.FullName, , True
        Call drei_Blätter_zeigen                     'nur drei bestimmte Blätter einblenden
        .Sheets("Anzeige").Activate
        '.Sheets("Anzeige").Visible = True
        '
        'For i = 1 To Sheets.Count
        '   If .Sheets(i).Name <> "Anzeige" Then
        '     .Sheets(i).Visible = False          'Alle außer Anzeige ausblenden
        '   End If
        'Next i
     End Select
  End With
  Application.DisplayAlerts = True
 
End Sub
und hier das Makro für die drei Blätter:
Option Explicit

Sub drei_Blätter_zeigen()      '3 definierte Blätter anzeigen
  Sheets("Anzeige").Visible = True
  Sheets("Daten-Eingabe").Visible = True
  Sheets("Datenbank").Visible = True
 
'   oder
'   For i = 1 To Sheets.Count
'      If Sheets(i).Name <> "Anzeige" And Sheets(i).Name <> "Daten-Eingabe" And Sheets(i).Name <> "Datenbank" Then
'         Sheets(i).Visible = False
'      End If
'   Next i
End Sub

Sub alle_zeigen()      'alle Blätter anzeigen
  For i = 1 To Sheets.Count
     Sheets(i).Visible = True
  Next i
End Sub
Antworten Top
#6
Danke,

habe ich das richtig verstanden??

Eine neue Mappe erstellen, dann Code1 in "DieseArbeitsmappe" und den 2. Code in jede Tabelle.

So gerade probiert und wenn ich Macros aktiviere springt der VBA Editor an.

Fehlermeldung und markiert das:

 Private Sub Workbook_Open()
Antworten Top
#7
Hi,

(30.03.2017, 08:27)M.Wichmann schrieb: Eine neue Mappe erstellen, dann Code1 in "DieseArbeitsmappe" und den 2. Code in jede Tabelle.

nein, aktuelle Datei, in der Du das haben willst.
Code 1 hinter "DieseArbeitsmappe"
Code 2 in ein allgemeines Modul

hier nochmal der Beginn des ersten Codes:
Option Explicit

Private Sub Workbook_Open()
 Dim s As String
 Dim i As Long

 s = VBA.Environ("Username")
 
'  'Datei generell schreibgeschützt öffnen
'  'Ausdruck.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
'  If Environ("username") <> "rab" Then
'     Application.DisplayAlerts = False
'     Workbooks.Open ThisWorkbook.FullName, , True
'  End If
 
 With ThisWorkbook

und hier sder zweite Code erweitert:
Option Explicit

Sub drei_Blätter_zeigen()      '3 definierte Blätter anzeigen
 
  Call eines_zeigen
 
  Sheets("Anzeige").Visible = True
  Sheets("Daten-Eingabe").Visible = True
  Sheets("Datenbank").Visible = True
 
  '   oder
  '   For i = 1 To Sheets.Count
  '      If Sheets(i).Name <> "Anzeige" And Sheets(i).Name <> "Daten-Eingabe" And Sheets(i).Name <> "Datenbank" Then
  '         Sheets(i).Visible = False
  '      End If
  '   Next i
End Sub

Sub alle_zeigen()      'alle Blätter anzeigen
  Dim i As Long
 
  For i = 1 To Sheets.Count
     Sheets(i).Visible = True
  Next i
End Sub

Sub eines_zeigen()
  Dim i As Long
 
  For i = 1 To Sheets.Count
        If Sheets(i).Name <> "Daten-Eingabe" Then
           Sheets(i).Visible = False
        End If
  Next i
End Sub

.xlsb   restriktives Öffnen.xlsb (Größe: 21,54 KB / Downloads: 7)
Antworten Top
#8
Habe ich so gemacht, Code 1 in DieseArbeitsmappe  und für code 2 ein Modul erstellt. 
Wieder Fehler.

Und bei deiner Datei flackern die sheets kurz und dann is alles ganz normal.
Antworten Top
#9
Hi,
(30.03.2017, 11:11)M.Wichmann schrieb: Habe ich so gemacht, Code 1 in DieseArbeitsmappe  und für code 2 ein Modul erstellt. 
Wieder Fehler.

Und bei deiner Datei flackern die sheets kurz und dann is alles ganz normal.

hast Du auch die Usernamen (Windows/Netzwerk Accountnamen) angepasst?
Case Is = "rab", "har", "smi":

Da solltest Du die tatsächlich vorkommenden Namen eintragen.

Vorher kannst Du Dir die mit
msgbox s
anzeigen lassen.
Antworten Top
#10
Hi, sorry aber das ist nicht das woran ich dachte. ( was ist zb falls man mal an einem anderen Rechner ist und will das öffnen??)

Ich dachte eher daran, wenn man die Datei öffnet, kommt ein Fenster wo man einen Namen bzw Abteilung auswählt, oder man muss es eingeben( was evtl zu Tippfehlern führen kann) und nach dem bestätigen geht das entsprechende Blatt auf.

Aber wenn das zu aufwendig wird lass ich es, ich bin schon nebenbei dabei die Quelldateien in einem Ordner zu sammeln( die Benutzer haben nur noch Verknüpfungen). Einige werden das nichtmal merken^^
Und meine Datei zum auswerten baue ich mit meinem neuen Wissen der letzten Tage auch um, um die Diagramme über Pivot zu machen.  


Meine Vorgänger haben 8 Einzeltabellen gehabt, und ich mache das jetzt mit einer.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste