Schlüsselelemente aus Excel Datenblatt automatisch in Liste exportieren
#1
Hey Leute,

mein Problem besteht darin, dass ich bestimmte Zellen aus einem Datenblatt (z.B. Bezeichnung, Ersteller, Datum), indem z.B. ein Fehler beschrieben wird, beim speichern der Datei automatisch zusätzlich in eine andere Excel Tabelle speichern will. Diese stellt dabei eine Liste aller bisher aufgetretenen Fehler mit deren Schlüsseleigenschaften dar.
Eine Besonderheit wäre hierbei, dass das Datenblatt alleine zusätlich als extra Datei abgespeichert werden sollte und sich die Datei in welche die Daten eigentlich eingetragen werden wieder "resettet" da es sich hierbei um die Vorlage handelt, welche mehrmals verwendet werden soll.

Zur Veranschaulichung habe ich mal eine Skizze angehängt.

Hat jemand eine Idee wie Ich das am besten umsetzen kann?

Vielen Dank schonmal!


Angehängte Dateien
.pdf   Skizze.pdf (Größe: 601,95 KB / Downloads: 11)
Antworten Top
#2
Dies ist ein Excelforum, kein PDF-Forum
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
Hallo

in deine Vorlage in ein Normales Modul
Code:
Option Explicit

Sub Basti()
    Dim WB1 As Workbook, Tb1 As Worksheet
    Dim WB2 As Workbook, Tb2 As Worksheet
    Dim WB3Name As String, WB3 As Workbook, TB3 As Worksheet, TB3Name As String
    Dim Sp As Integer, LR As Long
    Dim Pfad As String, Dateiname As String
    Dim Nname As String, Datum As String, Ersteller As String
   
    'Stammdaten****
    Pfad = "E:\excel\temp\" 'mit \ am Ende
    Dateiname = "NeineDatei " & Format(Date, "YYYYMMDD") 'Beispiel für neue Datei
   
    WB3Name = "Liste.xlsx"  'Die Merkliste
    TB3Name = "Tabelle1"
    Sp = 1 'Daten werden Spalte A eingetragen
   
    Nname = "A1" 'hier steht der Name
    Datum = "B1" 'hier steht das Datum
    Ersteller = Environ("UserName")
    'etc
   
    'Stammdaten Ende***
   
    Set WB1 = ThisWorkbook
    Set Tb1 = WB1.Sheets("Tabelle1")
   
    Tb1.Copy 'Blatt wird in neue Datei Kopiert
    ActiveWorkbook.SaveAs (Pfad & Dateiname)
    Set WB2 = ActiveWorkbook
    Set Tb2 = WB2.Sheets(1)
   
   
    Set WB3 = Workbooks.Open(Pfad & WB3Name)
    Set TB3 = Sheets(TB3Name)
   
    LR = TB3.Cells(TB3.Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
   
    'Daten ergänzen
    TB3.Cells(LR + 1, Sp) = Tb2.Range(Nname)
    TB3.Cells(LR + 1, Sp + 1) = Tb2.Range(Datum)
    TB3.Cells(LR + 1, Sp + 2) = Ersteller
   
   
    'WB1.Close False 'Vorlage schließen OHNE Speichern
    WB2.Close False 'Neue Datei schließen
    WB3.Close True 'Liste speichern undschließen
   
End Sub


Das  ' bei 
 'WB1.Close False
kannst du wegnehmen, wenn du alles getestet hast, das Makro läuft und du manuell einmal gespeichert hast


LG UweD
[-] Folgende(r) 1 Nutzer sagt Danke an UweD für diesen Beitrag:
  • basti.s
Antworten Top
#4
Vielen Dank für deine Hilfe!

Den Code verstehe ich, ich probiere dann mal bisschen aus und melde mich ggf. nochmal :)
Antworten Top
#5
Hatte noch das Problem, dass in meine Liste.xlsx nichts reingeschrieben wurde.
Grund war ein kleiner Syntaxfehler im Code in folgender Zeile:
Code:
Set TB3 = Sheets(TB3Name)

muss richtig heißen:
Code:
Set TB3 = WB3.Sheets(TB3Name)

Du hast mir wirklich sehr geholfen!
Antworten Top
#6
Hey, sorry dass ich mich nochmal melden muss.
Bestimmt ist die Frage banal, aber ich stehe irgendwie auf dem Schlauch:

Wenn ich bei
Code:
'WB1.Close False


das Hochkomma entferne, wird der Speichervorgang an der Stelle ja abgebrochen, was soweit ja auch richtig ist. Allerdings wird auch das Entfernen meines Hochkommas nicht gespeichert, wodurch beim erneuten Aufruf meine Änderung hinfällig ist. Kann ich den Code irgendwie manuell speichern oder so ohne dass dieser ausgeführt wird?

Ich mache das ganze ja in folgendem Sub, damit mein Code greift wenn gespeichert wird.
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Ich vermute ich habe hier irgendwo einen Denkfehler.

Kann mir jemand auf die Sprünge helfen?

Vielen Dank!
Antworten Top
#7
Hallo

das ist das Problem
entweder soll gespeichert werden oder nicht.

versuche mal folgendes

- öffne den VB- Editor
- setze einen Haltepunkt in Workbook_BeforeSave auf die Zeile cancel = true
- speichere die Datei

- jetzt bleibt die Makroausführung dort stehen
- verschiebe den gelben Pfeil mit der Maus um eine Zeile nach unten und lass das makro dann weiterlaufen 

LG UweD
[-] Folgende(r) 1 Nutzer sagt Danke an UweD für diesen Beitrag:
  • basti.s
Antworten Top


Gehe zu:


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