Office: VBA - verschiedene Workbooks aktivieren

Helfe beim Thema VBA - verschiedene Workbooks aktivieren in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, folgendes Problem habe ich. Mittels eines VBA Code möchte ich aus einer Excel Datei Daten in eine andere Datei schreiben. Das klappt... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Posaune, 21. April 2012.

  1. Posaune Erfahrener User

    VBA - verschiedene Workbooks aktivieren


    Hallo zusammen,
    folgendes Problem habe ich. Mittels eines VBA Code möchte ich aus einer Excel Datei Daten in eine andere Datei schreiben. Das klappt alles ganz gut. Das Problem ist, die zu öffnende Quelldatei kann verschiedene Namen haben. Beispiel: Vetretung 1.7 WG8.xls oder Vertretung 1.7 WG7.xls. Nun kollabiert mein Makro beim wechsel der einzelnen Workbooks, weil ich folgende Code benutze.
    Code:
        Windows("Vertretung 1.7 WG8.xls").Activate
    
    Wie muss der Code aussehen damit er quasi neutral ist?
    Hier mal der gesamte Code:
    Code:
    Sub Personal_kopieren()
    ' Personal_kopieren von einer alten Version in dei neue Version
            
        Sheets("Personal").Select       'Personalseite öffnen
        Sheets("Personal").Unprotect Password:="***"
        Range("B4:E53").Select
        Selection.ClearContents
        a = Application.GetOpenFilename("Excel-Dateien(*.xl*),*.xl*")   'alte Version suchen und öffnen
        If a = False Then Exit Sub
        Workbooks.Open Filename:=a
        Sheets("Personal").Select       'Personalseite öffnen und kopieren
        Sheets("Personal").Unprotect Password:="***"
        Range("B4:E53").Select
        Selection.Copy
        
        Windows("Vertretung 1.7 WG8.xlsm").Activate
        Range("B4").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
        Range("F4").Select
        Application.CutCopyMode = False
        Sheets("Personal").Protect Password:="***"
        
        Windows("Vertretung 1.7 WG8.xls").Activate
        ActiveWindow.Close
        
    End Sub
    
    
    Vielen Dank für eure Hilfe
    Gruß Norbert
     
    Posaune, 21. April 2012
    #1
  2. fette Elfe Erfahrener User
    Hallo Norbert,

    wenn Du mit mehreren Mappen gleichzeitig arbeitest, wird eine ordentliche Referenzierung eigentlich unverzichtbar.
    1. habe ich Deinen Code dahingehend abgeändert.
    2. kann man in fast allen Fällen auf "Select" verzichten.
    3. wofür willst Du in Deiner Quelldatei den Blattschutz deaktivieren? Bist Du sicher das es notwendig ist? Probiere es mal ohne aus.
    4. Deine Anfrage und Dein Code haben mir nicht komplett verdeutlicht was genau Du überhaupt wann - wo - wie machen willst, deshalb gehe ich davon aus Dich eventuell irgendwo falsch interpretiert zu haben.

    Schau Dir einfach mal den folgenden Code an und beschreibe genau was daran eventuell nicht passt, dann sehen wir weiter:
    Code:
    Option Explicit
    
    Dim strQuelle As String
    
    
    Public Sub Personal_kopieren()
        
        With ThisWorkbook.Worksheets("Personal")
            .Unprotect Password:="***"
            .Range("B4:E53").ClearContents
        End With
        
        strQuelle = Application.GetOpenFilename("Excel,*.xl*")
        If strQuelle = "" Then Exit Sub
        Workbooks.Open Filename:=strQuelle
        strQuelle = Split(strQuelle, "\")(UBound(Split(strQuelle, "\")))
        With Workbooks(strQuelle).Worksheets("Personal")
            .Unprotect Password:="*****"
            .Range("B4:E53").Copy
        End With
        
        With ThisWorkbook.Worksheets("Personal")
            .Range("B4").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
                xlNone, SkipBlanks:=False, Transpose:=False
            .Protect Password:="***"
        End With
        
        Application.CutCopyMode = False
        Workbooks(strQuelle).Close (False)
        
    End Sub

    Zwei Anmerkung noch:
    - Es ist keinerlei Fehlerabfang vorhanden, wenn z.Bsp. irgendwo das Blatt "Personal" nicht existiert (Tippfehler o.ä.), dann läuft das Makro vor die Wand.
    - bist Du sicher das Du beim kopieren auch die Formate komplett übernehmen willst? Ich hätte eher damit gerechnet dass nur die Werte übertragen werden sollen:
    Code:
    Paste:=xlPasteValues

    Ich hoffe geholfen zu haben.
     
    fette Elfe, 21. April 2012
    #2
  3. Posaune Erfahrener User
    Hallo Achim,
    vielen Dank für deine Hilfe. Dein Code funktioniert einwandfrei.
    1. Erklärung was ich machen will.
    Es handelt sich hier um eine Übersicht von Vertretern in unserem Verein. Nun Modifiziere ich ab und zu mal was. Es gibt die Datei bei verschiedenen Leuten mit verschiedenen Namen ( WG1 ; WG2;...). In der Datei sind Peronendaten gut geschützt untergebracht, damit sie nicht jeder sehen kann - ist halt so. Wenn nun eine neue Version von mir kommt, musste der Eigentliche Benutzer alle seine Peronendaten neu eingeben. In der alten Version gab es die Daten schon und mit hilfe deines Codes kann man diese Daten jetzt einfach und schnell übernehmen.
    2. Blattschutz:
    ja du hast recht funktioniert ohne aufheben des Blattschutzes.
    Wußte ich nicht :-)
    Nochmal Dankeschön
    Gruß Norbert
     
    Posaune, 21. April 2012
    #3
Thema:

VBA - verschiedene Workbooks aktivieren

Die Seite wird geladen...
  1. VBA - verschiedene Workbooks aktivieren - Similar Threads - VBA verschiedene Workbooks

  2. VBA Variableninhalt nach import aus zwei verschiedenen Dateien verschieden >Leer< und >""<

    in Microsoft Excel Hilfe
    VBA Variableninhalt nach import aus zwei verschiedenen Dateien verschieden >Leer< und >""<: Halle Excel Freaks, nach dem Import in eine Exelmappe aus einer anderen Mappe greife ich auf eine Zelle zu. In beiden Mappen steht in der Zelle nichts Beim Debuggen ist mir aufgefallen:...
  3. VBA verschiedene definierte "nicht leere" Bereiche aus Datei kopieren in neue Datei

    in Microsoft Excel Hilfe
    VBA verschiedene definierte "nicht leere" Bereiche aus Datei kopieren in neue Datei: Hallo zusammen, nachdem ich jetzt vieles hin- und her versucht habe komme ich nicht wirklich zu einem Ergebnis das ich gerne hätte. Ich habe einen Ordner in dem mehrere Excel Dateien...
  4. verschiedenen Text in einer Zelle mit VBA darstellen

    in Microsoft Excel Hilfe
    verschiedenen Text in einer Zelle mit VBA darstellen: Hallo zusammen, ich bin blutiger VBA Anfänger und verzweifele gerade an folgender Problematik. Über eine UserForm möchte ich auswählen welchem Geschlecht die Mitarbeiter angehören. Ich habe also...
  5. Aus Excel heraus verschiedene IP Adressen anpingen mit VBA

    in Microsoft Excel Hilfe
    Aus Excel heraus verschiedene IP Adressen anpingen mit VBA: Hallo zusammen. Vorweg: VBA kenn ich mich null aus! :-( Mein Ziel erst einmal: In einer Tabelle stehen in der Spalte C von 8 bis 21 verschiedene IP-Adressen. Per Klick auf einen Button soll dann...
  6. Ausgewählte Zellen per VBA in verschiedene Tabellen speichern

    in Microsoft Excel Hilfe
    Ausgewählte Zellen per VBA in verschiedene Tabellen speichern: Hallo liebe Forumfreunde, ich bin totaler Anfänger in Sachen VBA. versuche gerade etwas vba zu lernen *Smilie ich habe mir eine Mapper erstellt, wo ich aus Tabelle1 bestimmte Zellen in eine...
  7. Aufgaben aus einer Excel-Tabelle an verschiedene E-Mail-Adressen verteilen

    in Microsoft Excel Hilfe
    Aufgaben aus einer Excel-Tabelle an verschiedene E-Mail-Adressen verteilen: Hallo Forum, ich bin noch nicht allzu lange registriert, konnte aber bereits viele Hilfen und interessante Ansätze aus den Beiträgen entnehmen, welche mir sehr geholfen haben. In der Hoffnung...
  8. VBA Speichern mit Name/Datum/Text aus verschiedenen Zellen

    in Microsoft Excel Hilfe
    VBA Speichern mit Name/Datum/Text aus verschiedenen Zellen: Hallo zusammen, ich versuche möchte folgendes machen: eine Excelliste mit einem Buttong speichern, es soll in Dateinamen die Zelle F4+E3+O3 stehen, wenn ich den Buttong gedrückt habe...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden