Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
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

Mit VBA eine externe Datei öffnen

Mit VBA eine externe Datei öffnen
22.10.2015 17:46:36
FrodoBodo
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

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA eine externe Datei öffnen
23.10.2015 00:54:25
Matthias
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
Anzeige

339 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige