Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Daten aus einer anderen geöffneten Arbeitsmappe einlesen?
#1
Hallo, vielleicht kann mir jemand weiterhelfen.

Im Verzeichnis habe ich eine Arbeitsmappe "C:\Firma\Personal.xlsm" = Quelle
im Tabellenblatt "Mitarbeiter" sind in Spalte A die Mitarbeiter und in Spalte B die Abteilungen aufgelistet.

Im selben Verzeichnis habe ich die Arbeitsmappe "C:\Firma\Abrechnungen.xlsm" = Ziel

Die Arbeitsmappe "C:\Firma\Personal.xlsm" ist immer geöffnet.

Ich möchte nun, dass wenn ich die Datei "C:\Firma\Abrechnungen.xlsm" öffne, im dortigen Arbeitsblatt, welches ebenfalls den
Namen "Mitarbeiter" trägt, alle Mitarbeiter aus der Arbeitsmappe "C:\Firma\Personal.xlsm" welche in Spalte B "Verkauf" stehen haben
übertragen werden.

Kann mir jemand helfen?

Gruß Frank
Antworten Top
#2
Hallo Frank,
lade doch bitte stark gekürzt, aber wie soll prinzipell geschehen, Deine Sheets hoch.
Grüße aus Nürnberg
Armin
Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Antworten Top
#3
Hallo Frank,

aus Deinen Dateinamen entnehme ich, dass Du bereits mit Makros arbeitest. Du könntest Dir in dem Fall die Aktion aufzeichnen, im Prinzip - Datei und Blatt wechseln, nach Verkauf filtern, kopieren, zurück wechseln, Blatt und Zelle auswählen, Einfügen. Siehe dazu auch die Anleitung zur Makroaufzeichnung

Excel-Word-Makrorekorder
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo

ich hoffe mein Code laeuft auch ohne Beispieldatei. Es sind zwei verschieden Makros. Das erste kopiert die ganze Spalte B aus Personal in Spalte B Mitarbeiter. Das zweite ist eine For Next Schleife, falls leere Zeilen aus Personal nicht mit kopiert werden sollen. Sollte die Zielspalte eine andere sein im Makro bitte aendern.

mfg Gast 123

Code:
Option Explicit
'Personal.xlsm = Quelle
'Abrechnungen.xlsm = Ziel


Sub Personaldaten_Spalte_übertragen()
Dim WBk As Workbook, lz1 As Long
Dim PSht As Worksheet, lz2 As Long
Set WBk = Worksheets("Personal.xlsm")
Set PSht = WBk.Worksheets("Mitarbeiter")
   
With ThisWorkbook.Worksheets("Mitarbeiter")
     lz1 = .UsedRange.Rows.Count  'Mitarbeiter Range
     lz2 = PSht.Cells(Rows.Count, 2).End(xlUp).Row
   
    'alten Daten ,n Mitarbeiter Tabelle löschen!
    .Range("B2:B" & lz1).ClearContents
   
     'Daten in Personal kopieren und Mitarbeiter einfügen
     PSht.Range("B2:B" & lz2).Copy  '1:1 Kopie wie Personal
     .Range("B2").PasteSpecial xlPasteValues   '** Spalte ggf aendern!
     Application.CutCopyMode = False
End With
End Sub



Sub Personaldaten_Zeile_übertragen()
Dim AC As Range, Zeile As Long
Dim WBk As Workbook, lz1 As Long
Dim PSht As Worksheet, lz2 As Long
Set WBk = Worksheets("Personal.xlsm")
Set PSht = WBk.Worksheets("Mitarbeiter")
   
With ThisWorkbook.Worksheets("Mitarbeiter")
     lz1 = .UsedRange.Rows.Count  'Mitarbeiter Range
     lz2 = PSht.Cells(Rows.Count, 2).End(xlUp).Row
   
    'alten Daten ,n Mitarbeiter Tabelle löschen!
    .Range("B2:B" & lz1).ClearContents
     Zeile = 2   '1. Zeile zum kopieren
   
     'Daten über For Next Schleife einfügen
     For Each AC In PSht.Range("B2:B" & lz2)
        If AC.Value <> "" Then
          .Cells(Zeile, "B") = AC.Value   '** Spalte in Zells ggf aendern!
           Zeile = Zeile + 1
        End If
     Next AC
     Application.CutCopyMode = False
End With
End Sub

Nachtrag:   Alternativ kann man auch die Daten per Formel aus der Tabelle Personal holen.
Antworten Top
#5
Hallöchen,

fehlt da nicht die Bedingung, dass
Zitat:alle Mitarbeiter aus der Arbeitsmappe "C:\Firma\Personal.xlsm" welche in Spalte B "Verkauf" stehen haben
übertragen werden.
?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Hallo, vielen Dank für eure Hilfe,

ich habe das Problem wie folgt gelöst:


Sub Mitarbeiter()

Dim i As Long, tLR As Long
Dim ZielWks As Worksheet
Dim QuelleWks As Worksheet

Set QuelleWks = Workbooks("Personal.xlsm").Worksheets("Mitarbeiter")

Set ZielWks = Workbooks("Abrechnung.xlsm").Worksheets("Mitarbeiter_Abfrage")

Worksheets("Mitarbeiter_Abfrage").Rows("2:" & Worksheets("Mitarbeiter_Abfrage").Rows.Count).ClearContents

With QuelleWks
    For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
 
        If .Cells(i, 2).Value = "Verkauf" Then
            tLR = ZielWks.Cells(Rows.Count, 1).End(xlUp).Row + 1
            Debug.Print tLR
            With ZielWks
            .Range(.Cells(tLR, 1), .Cells(tLR, 2)).Value = QuelleWks.Range(QuelleWks.Cells(i, 1), _
QuelleWks.Cells(i, 2)).Value
            End With
        End If
    Next i
End With

End Sub


Gruß Frank
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste