Werte per Makro in andere Exceldatei kopieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox


Betrifft: Werte per Makro in andere Exceldatei kopieren
von: DeBü
Geschrieben am: 28.11.2016 08:36:13

Guten Morgen,
habe hier eine für meinen Kenntnisstand zu große Aufgabe und bitte um Unterstützung.
Spalten per Makro ohne Verknüpfungen in andere Excel-Datei kopieren.
Eine Aufgabe die sich mir stellt und die ich hier weitergeben möchte da ich sie nicht alleine lösen kann lautet:
Aus einer vorhandenen Excel-Quelldatei (QUELLDATEI,Tabelle1) markierte Werte ( werden jeweils per Maus markiert) in ein bestimmtes Tabellenblatt (z.B. ZIELDATEIi,TabJan16) einer Excel-Zieldatei per Makro und anklicken eines Buttons (Button befindet sich in Quelldatei) kopieren.
Herzlichen Dank!
Gruß
DeB

Betrifft: AW: Werte per Makro in andere Exceldatei kopieren
von: Michael (migre)
Geschrieben am: 29.11.2016 10:39:09
Hallo!
Hier mal ganz schnell was relativ standarmäßiges inkl. Kommentaren im Code. Das Ganze muss in Deine Quell-Datei in ein allgemeines Modul:

Sub AuswahlInZielDateiKopieren()
    '----- Anpassen -----
    Const ZIEL_PFAD As String = "U:\Test\" 'Verzeichnis der Ziel-Datei
    Const ZIEL_MAPPE As String = "Mappe2.xlsx" 'Name der Ziel-Datei
    Const ZIEL_BLATT As String = "TabJan16" 'Name des Ziel-Tabellenblattes
    '----- ENDE -----
    Dim WbQ As Workbook, WbZ As Workbook, WsZ As Worksheet
    Dim Bereich As Range, Opened As Boolean
    
    Application.ScreenUpdating = False
    Set WbQ = ThisWorkbook 'Quell-Mappe = DIESE Mappe (mit Makro(s))
    Set Bereich = Selection 'Aktuelle Auswahl auf dem Blatt wird kopiert...
    '..wenn mindestens 2 Zellen ausgewählt wurden -->
    If Bereich.Cells.Count < 2 Then
        '...ansonsten Abbruch
        MsgBox "Keine Quell-Daten ausgewählt. Vorgang wird abgebrochen!", _
            vbCritical, "Fehler!"
        Exit Sub
    End If
    Bereich.Copy 'Kopiert den aktuell ausgewählten Bereich
    'Ziel-Mappe öffnen, wenn noch nicht offen
    If MappeOffen(ZIEL_MAPPE) = False Then
        Set WbZ = Workbooks.Open(ZIEL_PFAD & ZIEL_MAPPE)
        Opened = True 'Vermerken, dass Ziel-Mappe durch Makro geöffnet wurde
    Else: Set WbZ = Workbooks(ZIEL_MAPPE)
    End If
    'Prüfen ob Ziel-Blatt vorhanden ist; wenn nicht wird Vorgang abgebrochen
    '(mit Warnmeldung) und die Ziel-Mappe geschlossen, WENN diese erst durch
    'dieses Makro geöffnet wurde
    If Not BlattVorhanden(ZIEL_BLATT, WbZ) Then
        MsgBox "Ziel-Blatt """ & ZIEL_BLATT & """ in Mappe """ & ZIEL_MAPPE & _
            """ nicht vorhanden. Vorgang wird abgebrochen", vbCritical, "Fehler!"
        If Opened Then WbZ.Close False
        Exit Sub
    End If
    'Kopierte Daten im Ziel-Blatt einfügen...
    With WbZ
        Set WsZ = .Worksheets(ZIEL_BLATT)
        With WsZ
            '...ab der nächsten freien Zelle in Spalte A
            'Eingefügt werden nur Werte und Zahlenformate, keine anderen
            'Formatierungen etc.
            .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial _
                xlPasteValuesAndNumberFormats
        End With
        'Wenn Ziel-Mappe erst durch dieses Makro geöffnet wurde, wird diese
        'wieder geschlossen, Änderungen gespeichert
        If Opened Then .Close True
    End With
    WbQ.Activate 'Quell-Mappe aktivieren
    Application.CutCopyMode = False
End Sub
Function MappeOffen(ZielMappe As String) As Boolean
'Prüft ob eine Mappe mit dem übergebenen Namen bereits offen ist
    Dim Wb As Workbook
    MappeOffen = False
    For Each Wb In Application.Workbooks
        If Wb.Name = ZielMappe Then MappeOffen = True
    Next Wb
End Function
Function BlattVorhanden(ZielBlatt As String, _
    ZielMappe As Workbook) As Boolean
'Prüft ob ein Blatt mit dem übergebenen Namen in der über-
'gebenen Mappe vorhanden ist
    Dim Ws As Worksheet
    BlattVorhanden = False
    For Each Ws In ZielMappe.Worksheets
        If Ws.Name = ZielBlatt Then BlattVorhanden = True
    Next Ws
End Function
Wo Du im Makro Anpassungen vornehmen musst, siehst Du an den Kommentaren. Kommst Du damit zurecht?
LG
Michael

Beiträge aus den Excel-Beispielen zum Thema "Werte per Makro in andere Exceldatei kopieren"