Excel VBA: Nur Teile der Tabelle exportieren

  • Ersteller Ersteller McMoneysack91
  • Erstellt am Erstellt am
M

McMoneysack91

Gast
Liebe Freunde,

Ich möchte einen Teil meiner Tabelle in eine externe Datei exportieren. Hierzu benutze ich einen Button mit VBA Makro versehen. Das Makro funktioniert bislang tadellos. Die Speicherung in den relativen Pfad klappt, das Speichern nur der aktiven Arbeitsmappe klappt, aber was nicht klappt ist der Bereich.

In meinem unten geposteten VBA Code möchte ich lediglich den Bereich A1:K38 in die neue abgespeicherte Datei kopiert haben, denn Jenseits von K sind weitere Spalten, die da gar nicht mit reingehören:

Sub Speichern_Tabelle()
Dim Neuer_Dateiname, PathName, FileName As String
Dim i As Integer

PathName = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\")) & "Verzeichnis\"
FileName = Format(Date, "YY-MM-DD") & "Makrotest" & ".xlsx"

ActiveSheet.Copy
Cells.Copy
Range("A1:K38").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("A1:K38").Select
i = MsgBox("Erfolgreich gespeichert!")
ActiveWorkbook.SaveAs PathName & FileName
ActiveWindow.Close savechanges:=False
End Sub


Wenn ich das Makro so durchlaufen lasse, hat die neue Datei leider nicht nur den Bereich A1:K38 sondern sämtliche anderen Spalten auch. Für mich sieht der Code so aus, dass Range("A1:K38") irgendwie doppelt gemoppelt auftaucht und vielleicht sogar an gänzlich falscher Stelle?
 
Ich glaube es ginge auch Range("A1:K38").Copy
ohne den
ActiveSheet.Copy
Cells.Copy

Part. Vielleicht klappt das damit.

Hier wird beschrieben wie.
 
  • Gefällt mir
Reaktionen: spcqike
  • ActiveSheet.Copy kopiert das gesamte Blatt
  • Cells.Copy kopiert alle Zellen
  • Range("A1:K38").Select markiert den Bereich A31:K38, kopiert aber nichts.
  • Selection.PasteSpecial Paste:=xlValues ... fügt das, was zuvor kopiert wurde (Cells.Copy) ab der aktuell markierten Zelle ein

Du brauchst also Range("A1:K38").Copy und solltest beim Einfügen (Paste...) auch definieren, wo es eingefügt wird; sonst geschieht das eben dort, wo gerade die Markierung sitzt.
 
  • Gefällt mir
Reaktionen: spcqike
G-Red schrieb:
Ich glaube es ginge auch Range("A1:K38").Copy
ohne den
ActiveSheet.Copy
Cells.Copy

Part. Vielleicht klappt das damit.

Hier wird beschrieben wie.
Das riet mir meine Logik auch, doch sobald ich etwas daran zu tun versuche, wird eben keine neue Datei mehr erstellt sondern es passiert ein Wirrwarr.

Mir ist aus dem von mir geposteten Code sowieso nicht ganz ersichtlich, wo der Befehl zum Erstellen einer neuen Datei ist. Aber es wird auf magische Art eine erstellt (was ich ja genau so brauche).
 
Gerade bei c&p zwischen mappen ist deklarieren besonders wichtig.

Set Quellwb= Workbooks(ThisWorbook.Name))

Am besten deklarierst du das neue Workbook gleich beim öffnen:
Set Zielwb= Workbooks.Add
Copy:
Quellwb.Sheets(Sheetname).Range("A1:K38").Copy Destination:=Zielwb.Sheets(Sheetname).Cells(1,1)
Speichern:
Zielwb.SaveAs PathName & FileName
 
  • Gefällt mir
Reaktionen: McMoneysack91
Zurück
Oben