8.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich brauche mal Eure Hilfe.

... möchte mit Excel 2010 eine fortlaufende Datenbank (in Ordnern sollen einzelne Blätter mit Problemen zur Abarbeitung hinterlegt werden) erstellen.
Sie soll im Firmennetzwerk von unterschiedlichsten Stellen in der Firma gespeichert und geöffnet werden.

Dabei soll eine Vorlage geöffnet und ausgefüllt werden.
Eine Blattbezeichnung in der Vorlage in der Zelle W4 soll automatisch auch der Speichername sein.

Habe hier viel aus dem Netz probiert und bin leider nicht zum Ziel gekommen.


Desweiteren sollen diverse Zelleninhalte (aus 3 Zellen) in einer Übersicht (andere Excel Tabelle) nach dem Speichern automatisch eingefügt werden, wobei es immer in eine neue Zeile geschrieben werden soll, nicht überschreiben.

Ist das überhaupt machbar!?????

34 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

müsste mit "Workbook_BeforeClose" machbar sein.

Hier ein entsprechendes Makro aufbauen.

Gruß

Helmut
0 Punkte
Beantwortet von
Hallo Helmut,
ich habe da sehr wenig Erfahrung,
versuche gerade au den vielen Codes im
Netz was zu basteln und zu Verstehen.
Für einen Vorschlag wäre ich dankbar.
Gruss Tobias
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
«Ist das überhaupt machbar!?????»

Meiner Meinung nach willst du aus einer Tabellenkalkulation (wie so viele andere auch) eine Datenbank machen. Das taugt nicht.

Allein die Formulierung »Eine Blattbezeichnung in der Vorlage in der Zelle W4« alarmiert mich: wie kommt da was rein, was steht drin, was passiert wenn es den Namen da schon gibt?

Reine Erfahrung mit der Kreativität von Kollegen lässt mich dir empfehlen es so wenigstens nicht aufzuzäumen. Aufgeteilte Mappen, oder wirklich eine Datenbank - das erschiene mir sinnvoller.

Eric March
0 Punkte
Beantwortet von
Hallo, Es handelt sich um drei Gewerke wo jeweils die einzelnen
Fehler in einer Übersicht gelistet und die einzelne Fälle in einem
Ordner abgespeichert sind und werden. In einen komplette Excel
passt es nicht da auch Fotos jeweils in den Fehlern sind.
Also es gibt eine Vorlage die ausgefüllt wird , von
unterschiedlichsten Leuten im Netzwerk . Derjenige der den Fehler
aufnimmt vergibt ein festgelegte BlattNr. in der Vorlage in der Zelle
W4 (habe ich angegeben damit ich Sie in einem evtl Code hier
wiederfinde) kommt die Bezeichnung rein. Ist vorgegeben damit man
es wiederfindet bis es als erledigt markiert ist. Die einzelnen
Tabellen sollen in einem Ordner abgelegt werden und in einer
Übersicht eingetragen oder automatisch gespeichert werden damit
nicht alles zu Fuss gemacht werden muss.
Beim nächsten mal mache ich es genauer.
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Was präzise kommt denn nach W4? Mal angenommen da trägt einer ‹Otto› ein. Dann könnte das für ein Programm (also unser Beende-Auto-Makro) heißen:
«F:\2011\April\25-Otto.xls»
Wobei F fest ist, 2011 wie April wie auch der 25. aus dem aktuellen Datum gewonnen werden kann und Otto die Eingabe ist. Was also soll mit der Eingabe passieren? Was soll passieren wenn die Datei schon vorliegt? Was, wenn in W4 nicht oder Murks steht?

Alles dumme Fragen die Folge von erlebter Kreativität der Kollegen sind…

Wenn wir mal zur Demo einen festen Pfad annehmen, dann muss ins Codefenster von «Diese Arbeitsmappe / This Workbook»:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.SaveCopyAs ("F:\Test\" & Cells("W4") & ".xls")
ActiveWorkbook.Close (False)
Cancel = False
End Sub

Das speichert die Quell(Formular)Mappe unter dem Namen in W4 und schließt sie ohne den Inhalt von W4 oder Änderungen zu speichern.

Eric March
0 Punkte
Beantwortet von mistermj Einsteiger_in (71 Punkte)
W4 ist belegt mit z.B. T5_L2012_002 oder G1_L2012_12 oder
S1_L2012_005

wobei 2012 das Jahr ist und hinten die durchlaufende Nummerierung
ist!
Habe es jetzt noch nicht probiert dafür muss ich erst mal an meinen
Rechner!

Die Zelle muss man eingeben und ist mit einer Notiz versehen bzw.
Bespiel was man eingeben muss!

Gruß
tobi
0 Punkte
Beantwortet von mistermj Einsteiger_in (71 Punkte)
Hallo,

klappt soweit, war nur ein wenig zu dä....! Wie verknüpfe ich den 2 Codes miteinander?

Sub SpeichernUnter()
Dim NeuerName As String
NeuerName = Range("W4")
ActiveWorkbook.SaveAs "Z:\_Neumann\BVBsT5\2012\" & NeuerName & ".xls"

End Sub

mit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim Pflichtbereich As Range
Dim Anzahl As Integer

Set Pflichtbereich = Worksheets("T5Bvb1").Range("D4,R4,W4,D5")
Anzahl = Pflichtbereich.Cells.Count

If Application.WorksheetFunction.CountA(Pflichtbereich) <> Anzahl Then
MsgBox "Bitte füllen Sie zuerst alle Pflichtfelder aus !", vbOKOnly + vbInformation, _
" Die Datei wurde NICHT gespeichert !"
Cancel = True
End If

End Sub


Also er Soll das Fehlerblatt mit dem Namen aus W4 erst Speichern wenn zusätzlich die Zellen D4,R4,D5 ausgefüllt sind.
Habe das als jeweils einzelne Makros.
Wenn ich es über einen Button starten möchte, statt mit Tastenkombination, an welches Stelle des Codes kommt er denn dann hin?

Dabei habe ich noch ne Frage wie kann ich das mit dem Excel 2010 Kürzel xlsx speichern, gibt nur Office 2010 auf den Rechnern im Netzwerk.
Danke schonmal für die Hilfe!

MFG
Tobias
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Für den Moment; ich muss noch andere Dinge hier erledigen - da drängelt jemand :-\ .

Soll ich raten, du hast den einen oder anderen Code irgendwo abgeschrieben?

Sage mir mal mttendrin was wie gmedeichselt werden soll wenn die Aktion abbebrochen werden muss? Ein Speichern mit den Bedingungen zu blockieren ist dann von Übel.
Ich gehe mal davon aus, dass in der Vorlage die betreffenden Zellen sicher leer sind?

Eric March
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Sodele, das wäre der rohe Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Pflichtbereich As Range
Dim Anzahl As Integer
Set Pflichtbereich = Worksheets("T5Bvb1").Range("D4,R4,W4,D5")
Anzahl = Pflichtbereich.Cells.Count
If Application.WorksheetFunction.CountA(Pflichtbereich) <> Anzahl Then
MsgBox "Bitte füllen Sie zuerst alle Pflichtfelder aus!", vbOKOnly + vbInformation, _
" Die Datei wird NICHT gespeichert!"
Cancel = True
Else
ThisWorkbook.SaveCopyAs ("Z:\_Neumann\BVBsT5\2012\" & Range("W4") & ".xlsx")
ActiveWorkbook.Close (False)
Cancel = False
End If
End Sub

Ich warne aber davor das so zu verwenden - weil es keinerlei Plausibilitätsprüfungen enthält - das ist nicht gut wenn man das Fremden in die Hände gibt. Die generelle Prüfung oben reicht nicht gegen die Kreativität der User und gegen Tippunfälle.
Obendrein fehlt noch der Notausstieg!

Eric March

Eric March
0 Punkte
Beantwortet von mistermj Einsteiger_in (71 Punkte)
Moin,

gerade getestet, kann excel leider nicht ausführen " Fehler 28 nicht genügend Stapelspeicher".
Muss ich die Codes dann wieder trennen? Oder über Module machen?

Das Macro soll dann geschützt werden, hatte ich irgendwo schon mal gesehen wie man das macht.

Das ganze dient es den Meistern und Teamsprechern zu vereinfachen, damit man nicht zuviel ausfüllen muss.
Ich möchte das ja noch weitertreiben so das später sich drei Zellen noch in einer Übersicht eintragen. Mailliste verfasst per Button erstellt werden kann.

Mfg
Tobias
...