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, 08:06
(Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2017, 08:07 von Rabe.)
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
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, 09:51
(Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2017, 09:53 von Rabe.)
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
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, 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.
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.
|