Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1288to1292
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Code funktioniert sporadisch, warum?

VBA-Code funktioniert sporadisch, warum?
17.12.2012 16:24:20
Hasi
Hallo,
zuerst möchte ich dieses Forum einmal loben, denn es hat mir schon oft weitergeholfen. Diesmal verzweifel ich jedoch ein wenig da mein VBA-Code nur sporadisch funktioniert:
  • 
    Sub Backup()
    'kopiert alle Daten nach Tabellenblatt "Backup"
    Sheets("Daten").Select
    Range("A15:ZZ5000").Select
    Selection.Copy
    Sheets("Backup").Select
    Range("A15").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Range("A1").Select
    Application.CutCopyMode = False
    'Speichern im entsprechenden Pfad
    Dim NeuerName
    Dim strPfad As String
    strPfad = ThisWorkbook.Path
    NeuerName = Worksheets("Eingabe").Cells(6, 2)
    ActiveSheet.Copy
    'ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & NeuerName & ".xls"
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\Backups\" & "Daten_" & NeuerName & ".xls"
    ActiveWorkbook.Save
    ActiveWorkbook.Saved = True
    ActiveWorkbook.Close
    Sheets("Backup").Select
    Range("A1:ZZ500").Select
    Selection.ClearContents
    Range("A1").Select
    Call Dropdown_Legende_Backup
    Sheets("Eingabe").Select
    End Sub
    
    Sub Dropdown_Legende_Backup()
    Sheets("Dropdown_Legende").Select
    'Speichern im entsprechenden Pfad
    Dim NeuerName1
    Dim strPfad1 As String
    strPfad1 = ThisWorkbook.Path
    NeuerName1 = Worksheets("Eingabe").Cells(6, 2)
    ActiveSheet.Copy
    'ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & NeuerName & ".xls"
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\Backups\" & "Dropdown_Legende_" &  _
    NeuerName1 & ".xls"
    ActiveWorkbook.Save
    ActiveWorkbook.Saved = True
    ActiveWorkbook.Close
    Sheets("Eingabe").Select
    End Sub
    

  • Der Code soll im Prinzip nur aus einer Hauptdatei einmal das Tabellenblatt "Daten" in eine eigene Datei kopieren mit Namen Daten und dem zugehörigen Datum und ein weiteres Tabellenblatt namens "Dropdown_Legende" auch in eine extra Datei mit Namen und Datum. Jetzt hab ich jedoch das Problem, dass dieser Code sporadisch funktioniert. Anfangs hab ich gedacht, dass es nur funktioniert wenn eine Datei schon vorhanden ist, aber dem ist nicht so.
    Ich würde mich sehr freuen mir könnte einer von euch helfen!
    Ich bin mir durchaus bewusst, dass der Code auch kürzer ginge. Wenn jemand also auch hier ne Verbesserung in Petto hat, dann nur zu.
    Vielen Dank schonmal
    Gruß Jens

    4
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA-Code funktioniert sporadisch, warum?
    17.12.2012 16:44:17
    Daniel
    HI
    du solltest grundsätzlich nicht Selection arbeiten (auch wenn der Recorder das so aufzeichnet), sondern immer die Zellen vollständig und direkt referenzieren, dh wenn du mit mehreren Tabellenblättern arbeitest, immer das Tabellenblatt mit angeben und wenn du mit mehreren Dateien arbeitest, zusätzlich noch das Workbook.
    dann bist du nicht mehr abhängig davon, was gerade mehr oder weniger zufällig aktiv ist
    Sub Backup()
    Dim NeuerName
    Dim strPfad As String
    'kopiert alle Daten nach Tabellenblatt "Backup"
    ThisWorkbook.Sheets("Daten").("A15:ZZ5000").Copy
    ThisWorkbook.Sheets("Backup").Range("A15").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    'Speichern im entsprechenden Pfad
    strPfad = ThisWorkbook.Path
    NeuerName = ThisWorkbook.Sheets("Eingabe").Cells(6, 2)
    ThisWorkbook.Sheets("Backup").Copy
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\Backups\" & "Daten_" & NeuerName & ".xls"
    ActiveWorkbook.Close
    ThisWorkbook.Sheets("Backup").Range("A1:ZZ500").ClearContents
    End Sub
    
    das Makro Dropdown_Legende_Backup wiederholt ja nur den 2. teil des ersten Makros.
    hat das eine bestimmte Bedeutung? ist doch eigentlich überflüssig.
    Gruß Daniel

    Anzeige
    AW: VBA-Code funktioniert sporadisch, warum?
    17.12.2012 16:51:58
    Hasi
    Hi Daniel,
    danke für die schnelle Antowort.
    Das Makro Dropdown_Legende_Backup soll ein 2. Tabellenblatt in eine 2. neue Datei kopieren. Zuvor wurde ja ein anderes Tabellenblatt in eine 1. Datei kopiert. Deshalb hatte ich das getrennt. wenn man das aber auch noch in das erste packen kann, dann muss ich mal schauen wie das geht mit deinem code. werd ihn gleich mal ausprobieren und später nochmal Rückmeldung geben.

    AW: VBA-Code funktioniert sporadisch, warum?
    17.12.2012 17:58:50
    Daniel
    Hi
    sorry hatte überlesen, das du vorher ein neues Sheet selektiert hattest, sondern nur das "ActiveSheet.Copy" gelesen (ich hoffe du verstehts jetzt, warum das Select und Activate schei...e ist)
    wenn du ein neues Blatt kopieren und speichern willst, dann muss man das natürlich nochmal ausführen.
    wenn du allerding schon das Speichern der Sicherheitskopie in eine eigene Subroutine auslagerst, dann würde ich das für beide Vorgänge machen und nicht nur für einen:
    Sub Backup()
    With ThisWorkbook
    'kopiert alle Daten nach Tabellenblatt "Backup"
    .Sheets("Daten").Range("A15:ZZ5000").Copy
    .Sheets("Backup").Range("A15").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    'Speichern im entsprechenden Pfad
    Call Sicherungskopie(.Sheets("Backup"), .Path, "Daten_" & .Sheets("Eingabe").Cells(6, 2). _
    Value)
    'Backup löschen
    .Sheets("Backup").UsedRange.ClearContents
    'DropDown_Legende speichern
    Call Sicherungskopie(.Sheets("DropDown_Legende"), .Path, "DropDown_Legende_" & .Sheets(" _
    Eingabe").Cells(6, 2).Value)
    .Sheets("Eingabe").Select
    End With
    End Sub
    Sub Sicherungskopie(Blatt As Worksheet, Pfad As String, NeuerName As String)
    Blatt.Copy
    With ActiveWorkbook
    .SaveAs Pfad & "\Backups\" & NeuerName, FileFormat:=56
    .Close
    End With
    End Sub
    
    arbeitest du nur noch mit Excel 2007 oder muss die Datei auch unter Office XP lauffähig sein?
    das Problem ist, daß man ab Office 2007 beim Speichern das Fileformat angeben sollte.
    ob das jetzt so auch unter OfficeXP lauffähig ist, musst du mal testen.
    Gruß Daniel

    Anzeige
    AW: VBA-Code funktioniert sporadisch, warum?
    17.12.2012 19:17:51
    Hasi
    Hey,
    so läuft jetzt soweit! Hab deine Vorschläge umgesetzt und vorallem hab ich jetzt denk ich auch verstanden, warum es mal geklappt hat und mal nicht.
    Was du auch schon angesprochen hast, ist, dass der Makrorekord das auch so macht. Dieser hilft ja in den meisten fällen super schnell und gut, aber wie man sehen kann leider nicht in allen.
    Vielen Dank nochmal für die schnelle Hilfe!!!
    Schönen Abend noch und ruhige, erholsame Feiertage.
    lg Jens

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige