Mit VBA eine externe Datei öffnen

Bild

Betrifft: Mit VBA eine externe Datei öffnen
von: FrodoBodo
Geschrieben am: 22.10.2015 17:46:36

Hallo zusammen,
ich habe eine Datei mit zwei Blättern(Reitern).
Blatt 1 enthält chaotisch erfasst (Zeile für Zeile) Daten und Mengenangaben.
Blatt 2 enthält die Grunddaten (Basisdaten).
Wenn ich nun den Gesamtbestand meiner Sammlung wissen möchte, starte ich ein Makro das folgendes macht.
Es geht in Blatt2 und nimmt sie die erste Nummer inZeile2/Spalte 3
Springt dann wieder zurück in Blatt1 und sucht dort in Spalte 5 nach der Nummer.
Findet er einen Eintrag, geht es in Blatt1/Spalte 8 und merkt sich den Wert.
so durchläuft er das komplette Blatt1 und zählt den Wert aus Blatt1/Spalte 8 zusammen so das am Ende eine Gesamtsumme herauskommt.
Ist das Blattende erreicht springt es zurück in Blatt2 und trägt den Wert(Quasi die errechnete Summe) in Spalte7 ein.
Dann geht er es eine Zeile weiter und liest den nächsten Nummer in Spalte3.
Das ganze funktioniert perfekt.
Nun möchte ich aber das Blatt2 , mit den Basisdaten auslagern, also in eine eigene Datei speichern.
Ich hatte diese Makro auch mit eurer Unterstützung erstellt.
Ich habe Probleme mit dem „öffnen“ bzw. dem hin und herspringen zwischen den Dateien.

Sub Summenbilden ()
    Dim nummer$, ws As Worksheet, i&, j&, k&, l&, Pfad$
    Dim summe
    Application.ScreenUpdating = True
    Set ws = ActiveSheet
    summe = 0
    For j = 2 To Sheets(„Basis“).Cells(Sheets(„Basis“).Rows.Count, 1).End(xlUp).Row
        nummer = Sheets(„Basis“).Cells(j, 3).Value
        With ws
            For i = 1 To Sheets(„Beweg“).Cells(.Rows.Count, 5).End(xlUp).Row
                If Sheets(„Beweg“).Cells(i, 5).Value = nummer Then
                    summe = summe + Sheets(„Beweg“).Cells(i, 8).Value
                End If
            Next i
        End With
        
        If summe > 0 Then
            Sheets(„Basis“).Cells(j, 7).Value = summe
            summe = 0
        End If
        
    Next j
    
End Sub

Kann mir da jemand auf die Sprünge helfen????
Gruß FrodoBodo

Bild

Betrifft: AW: Mit VBA eine externe Datei öffnen
von: Matthias
Geschrieben am: 23.10.2015 00:54:25
Hallo Frodo,
ich nehme mal an beim aktiven Sheet (Set ws = ActiveSheet) handelt es sich um Sheets("Beweg"), da sonst kein anderes erwähnt wurde.
Das Hin- und Herspringen kann man sich sparen, wenn man die Sheets mit Workbooks("Name").Sheet("Name") anspricht. Um das ganze noch einfacher zu gestalten kann man für die Ausgangsmappe sogar ThisWorkbook nehmen. Auch kann man gleich beim Öffnen der Mappe mit den Basisdaten das Workbook und Sheet einer Variablen zuweisen.
Das ScreenUpdating gibt logischerweise an ob beim Ausführen das Makros Bewegungen aktualisiert und angezeigt werden. Dies frisst massig Ressourcen und beim Öffnen/Schließen der anderen Datei kommt es zu Bildschirmflackern. Daher wird das Updating zu Beginn ausgestellt (False) und am Ende wieder auf den Ausgangszustand (True) zurückgestellt.

Sub Summenbilden()
    Dim nummer$, ws As Worksheet, i&, j&, k&, l&, Pfad$
    Dim wsBasis As Worksheet, wbBasis As Workbook
    Dim summe
    
    Application.ScreenUpdating = False
    
    Set ws = ThisWorkbook.Sheets("Beweg")
    Set wbBasis = Workbooks.Open("D:\Dokumente\Mappe1.xlsx")
    Set wsBasis = wbBasis.Sheets("Basis")
    
    summe = 0
    
    With wsBasis
        For j = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
            nummer = .Cells(j, 3).Value
            
            For i = 1 To ws.Cells(ws.Rows.Count, 5).End(xlUp).Row
                If ws.Cells(i, 5).Value = nummer Then
                    summe = summe + ws.Cells(i, 8).Value
                End If
            Next i
                    
            If summe > 0 Then
                .Cells(j, 7).Value = summe
                summe = 0
            End If
        Next j
    End With
    
    wbBasis.Close
    Application.ScreenUpdating = True
End Sub
Der Pfad für die Datei mit den Basis-Daten ist selbstverständlich deinerseits zu ändern.
lg Matthias

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Mit VBA eine externe Datei öffnen"