Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nur bestimmten Zellbereich kopieren u. exportieren

Forumthread: Nur bestimmten Zellbereich kopieren u. exportieren

Nur bestimmten Zellbereich kopieren u. exportieren
17.03.2009 14:41:11
Bernd
Hallo Freaks,
ich habe diesen Code für das Exportieren bestimmter Tabellenblätter aus dem Forum-Archiv.
Wer wäre bitte so nett und würde den Code dahingehend anpassen, dass nur die Zellen A1:P36 des Sheets "Export" kopiert werden?
Wenn es nicht zu unverschämt ist, wäre ich an nachstehender Ergänzung auch brennend interessiert.
Alle im kopierten und exportierten Zell-Bereich enthaltenen Formeln durch Werte ersetzen und diese Werte auf zwei Stellen nach dem Komma runden.
Herzlichen Dank im voraus.
Grüße
Bernd

Sub BlattKopieren()
Dim strFile As String
strFile = "MAPPE1_DATEN"   'Dateinamen vorgeben!
strFile = Application.GetSaveAsFilename(initialfilename:=strFile, _
fileFilter:="Excel Files (*.xls; *.xla; *.xlt), *.xls; *.xla; *.xlt")
If strFile = "Falsch" Then Exit Sub
Workbooks("Mappe.xls").Sheets("EXPORT").Copy
With ActiveWorkbook
.Sheets(1).Name = "Exportdaten"
.SaveAs strFile
'.Close   'wenn die neue Mappe geschlossen werden soll!
End With
End 

Sub


		
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur bestimmten Zellbereich kopieren u. exportieren
17.03.2009 17:26:16
fcs
Hallo bernd,
hier deine Prozedur angepasst und ergänzt.
Gruß
Franz

Sub BlattKopieren()
Dim strFile As String, wbQuelle As Workbook, wbZiel As Workbook
Dim wksQuelle As Worksheet, wksZiel As Worksheet, Zelle As Range
strFile = "MAPPE1_DATEN"   'Dateinamen vorgeben!
strFile = Application.GetSaveAsFilename(InitialFileName:=strFile, _
fileFilter:="Excel Files (*.xls; *.xla; *.xlt), *.xls; *.xla; *.xlt")
If strFile = "Falsch" Then Exit Sub
Set wbQuelle = Workbooks("Mappe.xls") ' oder = ActiveWorkbook
Set wksQuelle = wbQuelle.Sheets("EXPORT")
wksQuelle.Copy
Set wbZiel = ActiveWorkbook
Set wksZiel = wbZiel.Worksheets(1)
With wksZiel
'Alles Inhalte durch Werte ersetzen
.UsedRange.Value = .UsedRange.Value
'Spalten ab Spalte Q (18) löschen
.Range(.Columns(17), .Columns(.Columns.Count)).Delete shift:=xlShiftToLeft
'Zeilen ab Zeile 37
.Range(.Rows(37), .Rows(.Rows.Count)).Delete shift:=xlShiftUp
'Name ändern
.Name = "Exportdaten"
'Alle Zahlen im Bereich auf 2 Stellen runden
For Each Zelle In .Range("A1:P36")
If IsNumeric(Zelle) Then
Zelle.Value = Application.WorksheetFunction.Round(Zelle.Value, 2)
End If
Next
End With
With wbZiel
.SaveAs strFile
'.Close   'wenn die neue Mappe geschlossen werden soll!
End With
End Sub


Anzeige
@Franz - Tausend Dank! Klappt wunderbar! o.T.
18.03.2009 08:52:45
Bernd
Anzeige
Anzeige

Infobox / Tutorial

Nur bestimmten Zellbereich in Excel exportieren


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade die Arbeitsmappe, die den Zellbereich enthält, den Du exportieren möchtest.
  2. Öffne den VBA-Editor mit ALT + F11.
  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei)", wähle "Einfügen" > "Modul".
  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub BlattKopieren()
        Dim strFile As String, wbQuelle As Workbook, wbZiel As Workbook
        Dim wksQuelle As Worksheet, wksZiel As Worksheet, Zelle As Range
        strFile = "MAPPE1_DATEN"   'Dateinamen vorgeben!
        strFile = Application.GetSaveAsFilename(InitialFileName:=strFile, _
        fileFilter:="Excel Files (*.xls; *.xla; *.xlt), *.xls; *.xla; *.xlt")
        If strFile = "Falsch" Then Exit Sub
        Set wbQuelle = Workbooks("Mappe.xls") ' oder = ActiveWorkbook
        Set wksQuelle = wbQuelle.Sheets("EXPORT")
        wksQuelle.Copy
        Set wbZiel = ActiveWorkbook
        Set wksZiel = wbZiel.Worksheets(1)
        With wksZiel
            'Alles Inhalte durch Werte ersetzen
            .UsedRange.Value = .UsedRange.Value
            'Spalten ab Spalte Q (18) löschen
            .Range(.Columns(17), .Columns(.Columns.Count)).Delete shift:=xlShiftToLeft
            'Zeilen ab Zeile 37
            .Range(.Rows(37), .Rows(.Rows.Count)).Delete shift:=xlShiftUp
            'Name ändern
            .Name = "Exportdaten"
            'Alle Zahlen im Bereich auf 2 Stellen runden
            For Each Zelle In .Range("A1:P36")
                If IsNumeric(Zelle) Then
                    Zelle.Value = Application.WorksheetFunction.Round(Zelle.Value, 2)
                End If
            Next
        End With
        With wbZiel
            .SaveAs strFile
            '.Close   'wenn die neue Mappe geschlossen werden soll!
        End With
    End Sub
  5. Passe den Code an, falls Du andere Zellbereiche exportieren möchtest.
  6. Führe das Makro aus: Drücke F5 oder wähle im Menü "Ausführen".

Häufige Fehler und Lösungen

  • Fehler: "Falsch" beim Speichern

    • Lösung: Stelle sicher, dass der Dateiname korrekt eingegeben wird und dass Du nicht versuchst, eine bereits vorhandene Datei mit dem gleichen Namen zu speichern.
  • Problem beim Kopieren des Zellbereichs

    • Lösung: Überprüfe, ob das Arbeitsblatt "EXPORT" existiert. Der Code kann nur auf vorhandene Blätter zugreifen.

Alternative Methoden

  • Manuelles Kopieren und Einfügen: Du kannst den Zellbereich A1:P36 einfach markieren, kopieren und in eine neue Arbeitsmappe einfügen. Danach kannst Du die Werte durch "Einfügen > Werte" ersetzen.

  • Power Query: Eine weitere Möglichkeit, Excel auszuwählen und zu exportieren, ist die Nutzung von Power Query, um Daten aus verschiedenen Quellen zusammenzuführen und zu exportieren.


Praktische Beispiele

  • Exportiere nur bestimmte Spalten: Du kannst den Code anpassen, um nur bestimmte Spalten (z.B. A, B und C) zu exportieren, indem Du .Range("A1:C36") im Code verwendest.

  • Runde Werte in einem anderen Bereich: Um Werte in einem anderen Zellbereich zu runden, ändere die .Range("A1:P36") zu dem gewünschten Bereich.


Tipps für Profis

  • Erstelle eine Schaltfläche in Deinem Excel-Blatt, um das Makro leicht auszuführen, ohne den VBA-Editor öffnen zu müssen.
  • Nutze Variablen für Dateinamen, um den Code dynamischer zu gestalten und die Wiederverwendbarkeit zu erhöhen.
  • Dokumentiere Deinen Code mit Kommentaren, um ihn später leichter anpassen zu können.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellbereiche exportieren?
Du kannst den Code erweitern, indem Du mehrere .Range-Anweisungen hinzufügst, um verschiedene Bereiche in die neue Arbeitsmappe zu kopieren.

2. Funktioniert das auch in Excel Online?
Der VBA-Code funktioniert nur in Desktop-Versionen von Excel. Excel Online unterstützt keine Makros.

3. Kann ich das Makro für andere Tabellenblätter nutzen?
Ja, Du kannst den Namen des Arbeitsblatts im Code anpassen, um es für andere Tabellen zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige