1.2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Forum,

ich bin total Ratlos, habe ein paar ansätze, aber nichts konkretes bin in Makro Programmierung nicht wirklich gut.

Folgendes Szenario:

Ich habe mehrere Exceldateien mit gleicher Struktur in einem Verzeichnis liegen. Alle diese Dateien möchte ich in einer neuen Datei zusammenfassen bzw. nur ein Tabellenblatt soll ausgewählt werden.

Das funktioniert auch soweit, aber wenn ich jetzt Filter einbauen möchte geht das nicht.

In den Quelldateien steht in Spalte E die Information die ich in der Zieldatei bereits in die Zelle A6 eingegeben hat, er soll mir also nur die Werte übernehmen, wo diese beiden Werte übereinstimmen.

Kann mir jemand helfen?

Danke!

4 Antworten

0 Punkte
Beantwortet von
Hallo Forum,

folgenden Code habe ich bisher er bringt mir nur einen Fehler.


Sub Syncro()

Dim i As Long
Dim Pnr As Long
Dim Zeile As Long
Dim LetzteZeile As Long
Dim Pnr1 As Long
Dim Pnr2 As Long
Dim Suchbegriff1 As String
Dim Info As Variant
Dim Firma As Variant
Dim Source As String

' Firmenbegriff auswählen und Projektnummern abfragen

Suchbegriff1 = Range("A6").Value

Pnr1 = Application.InputBox(Prompt:="Bitte geben Sie die erste Projektnummer ein", _
Title:="Ältestes Projekt", Type:=1)


Pnr2 = Application.InputBox(Prompt:="Bitte geben Sie die letzte Projektnummer ein", _
Title:="Jüngstes Projekt", Type:=1)

' Ausschalten Bildschirmverfolgung

Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

' Aufrufen Datei aus Verzeichniss (Schleife!)

For Pnr = Pnr1 To Pnr2
Source = "N:\Test\Dateien\"
Workbooks.Open Filename:=Source & Pnr & ".xlsx"

For Zeile = 12 To 191
Workbooks.Open Filename:=Source & Pnr & ".xlsx"
Sheets("BZP").Select
If Cells(Zeile, 6).Value = Suchbegriff1 Then
Firma = Suchbegriff1
Range(Firma.Address).Select
lngR = ActiveCell.Row
Info = Range("A,lngR:ElngR").Select
Selection.Copy
End If
Zeile = Zeile + 1

'Infos kopieren

Windows("Gesamt.xlsm").Activate
LetzteZeile = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Range("C:C", LetzteZeile).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'Bauvorhaben kopieren

Workbooks.Open Filename:=Source & Pnr & ".xlsx"
Sheets("BZP").Select
Range("A6").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Gesamt.xlsm").Activate
Range("A:A", LetzteZeile).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
Pnr = Pnr + 1
Next

End Sub


Er bringt mir an dieser Stelle:

Range("C:C", LetzteZeile).Select


Die Methode Range ist fehlgeschlagen 1004.

Wer kann helfen, oder habt ihr einen ganz anderen Ansatz.

Danke!
cettheonly
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
hallo,

nach meiner Meinung funktioniert der Befehl nicht.
ich weiss zwar nicht genau was du vorhast, aber es müsste meine ich so heissen:

Range("C1:C" & LetzteZeile).Select

Sonst erkläre was du bewirken willst.

Gruß

Helmut
0 Punkte
Beantwortet von
Hallo Helmut,

danke für deine Antwort.
Leider geht es so auch nicht ich habe es mir jetzt so gebaut, da scheint es zu gehen.

Zeilen1 = "C" & LetzteZeile
Range(Zeilen1).Select


Habe mir einfach eine Hilfsvariable gebaut.

Es macht immer noch nicht das was es soll.

Kurz mal zur näheren Betrachtung meines Problems die Hintergründe:

Ich habe mehrere Exceldateien mit gleicher Strucktur, welche in einer neuen Exceldatei zusammengefasst werden sollen auf Basis einer Abfrage nach einem Bestimmten Wert der ind der Zieldatei an Zelle "A6" liegt und in den Quelldateien in der Spalte "F" steht (das habe ich bei meiner Abfrage noch nicht berücksichtigt und die Spalte "C" der Quelldatei soll in der Zieldatei in Spalte "A" kopiert werden.
Es sollen also mehrere Einzelne Informationen der Quelldatei in eine neue Zieldatei kopiert wreden auf Basis einer Abfrage ob wert übereinstimmt.

Gruß
Chris
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

zwischen meiner und deiner Lösung sind schon erhebliche Unterschiede.

Range("C1:C" & LetzteZeile).Select

hier wird von der ersten bis zur letzten Zeile alles makiert, wie es mit Filter ist, kann ich aus dem Kopf jetzt nicht sagen.

Zeilen1 = "C" & LetzteZeile
Range(Zeilen1).Select

hier wird nur die letzte Zeile Markiert.

Für weitere Hilfe wäre eine Beispieldatei nicht schlecht.

Gruß

Helmut
...