Registriert seit: 06.03.2017
Version(en): 2007
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.
Registriert seit: 12.04.2014
Version(en): Office 365
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
Registriert seit: 06.03.2017
Version(en): 2007
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.
Registriert seit: 12.04.2014
Version(en): Office 365
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. 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
Registriert seit: 10.04.2014
Version(en): 2016 + 365
30.03.2017, 09:06
(Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2017, 09:07 von Rabe.)
Hi, (30.03.2017, 08: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
Registriert seit: 06.03.2017
Version(en): 2007
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()
Registriert seit: 10.04.2014
Version(en): 2016 + 365
30.03.2017, 10:51
(Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2017, 10:53 von Rabe.)
Hi, (30.03.2017, 09: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
restriktives Öffnen.xlsb (Größe: 21,54 KB / Downloads: 7)
Registriert seit: 06.03.2017
Version(en): 2007
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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi, (30.03.2017, 12: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.
Registriert seit: 06.03.2017
Version(en): 2007
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.
|