605 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Liebe Community,

arbeite gerade an einem Projekt, das aus mehreren Arbeitsblättern besteht. Auf Blatt 1 sind mehrere Checkboxen, die dort zusammengezählt werden. In Arbeitsblatt 2 werden diese dann in einer Tabelle eingetragen.
Meine Bitte an euch nun, da dies meine VBA Kenntnisse um ein Vielfaches übersteigt: wie müsste der Code für eine VBA Funktion lauten, die mir nur das Arbeitsblatt 2 (genannt "Auswertung") als neue Excel Datei in einem bestimmten Ordner speichert.
Sie sollte dabei den Dateinahme außerdem aus der Zelle "B3" des Auswerungsblatts haben.

Falls ich euch dann noch nicht zu viel zugemutet habe, stehe ich noch vor dem Problem, dass wenn ich diese Prozedur manuell mache, die Bezüge der "neuen Datei" auf das Arbeitsblatt von der "alten Datei" verweisen.
Wie speichert man die aktuellen Werte, statt die Funktionen?


Falls ihr mir damit helfen könntet wäre ich wirklich wahnsinnig dankbar!

15 Antworten

0 Punkte
Beantwortet von
Hallo EnteErdnuss :-)

Speichern einer Tabelle in eine neue Mappe!

Gruss Nighty


Sub CopyWks()
Application.DisplayAlerts = False
ThisWorkbook.Worksheets("Auswertung").Copy Before:=Workbooks.Add.Worksheets(1)
ActiveWorkbook.Worksheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Delete
ActiveWorkbook.SaveAs "J:\Temp\" & Range("B3") & ".xls"
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
0 Punkte
Beantwortet von
Hallo Nighty,

vielen Dank für deine Hilfe :)! Funktioniert toll soweit!
Wie bekomme ich es denn jetzt noch hin, dass statt der Bezüge bzw. Funktionen die "aktuellen Werte" gespeichert werden?
0 Punkte
Beantwortet von
Ok ich habe noch etwas daran herumgespielt, dass das ganze durch Klick eines Commandbuttons ausgeführt wird:

Sub commandButton1_Click()
Application.DisplayAlerts = False
ThisWorkbook.Worksheets("Auswertung").Copy Before:=Workbooks.Add.Worksheets(1)
ActiveWorkbook.Worksheets(Array("Fragebogen", "Items")).Delete
ActiveWorkbook.SaveAs Filename:="C:\Users\EnteErdnuss\Desktop\" & Range("B3").Value & ".xls"
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub



Jetzt gibt er mir jedoch jedesmal den Laufzeitfehler '9' aus: der Index sei außerhalb des gültigen Bereichs.

Darüber hinaus speicert er mir die Dateien nicht unter dem gewünschten Verzeichnis und dem gewünschten Namen. Inzwischen bin ich bei Mappe 15, wenn ich den Befehl ausführe und ich finde die verdammten Dinger nirgendwo :D
0 Punkte
Beantwortet von
Oh wichtige Information bestimmt:

beim Debuggen des Fehlers verweist er auf die Zeile 4
0 Punkte
Beantwortet von
Hi EnteErdnuss,

dann lass doch Zeile 4 einfach mal weg und probiers ohne. In alten Excel-Versionen werden offenbar beim Kopieren des Blatts die üblichen 3 Leertabellen in der neuen Datei angelegt, in Excel 2010 wird tatsächlich nur das aktive Blatt überspielt.

Wie bekomme ich es denn jetzt noch hin, dass statt der Bezüge bzw. Funktionen die "aktuellen Werte" gespeichert werden?


Nutze dafür nach dem Kopieren die Zeile
ActiveWorkbook.BreakLink Name:="Pfad\Dateiname.xlsx", Type:=xlExcelLinks
wobei für Pfad\Dateiname der Name deiner alten Datei (vor dem Kopieren) einzutragen ist.
0 Punkte
Beantwortet von
Hallo XlKing .-)

Zitat
In alten Excel-Versionen

Excel 2000 .-)
*Immer rein in die Wunde*
*Das war eine Anspielung auf mein Alter*
*Mir haben Sie mittlerweile das Auto beschlagnahmt und ein Fahrad in die Hand gedrücken,mit einer BVG Karte für den Winter* ... *g*

Gruss Nighty
0 Punkte
Beantwortet von
Hey Nighty,

du weißt, auch ich hab Excel 2000 und bin froh darüber. Das 2010er kann ich auch nur gelegentlich beim Kumpel nutzen, um mal was auszuprobieren. Das mit dem Löschen von Verknüpfungen ist einer der extrem wenigen Vorteile der neueren Version. Deshalb geb ich aber kein unnötiges Geld aus. Mach dir also keinen Kopp. ;-)

Liebe Grüße
Mr. K.
0 Punkte
Beantwortet von
Wenn ich Zeile 4 weg lasse erstellt er jedoch keine neue Arbeitsmappe :/
Darf ich euch mal die Datei linken und ihr schaut Sie euch an?
Tut mir echt wahnsinnig leid, wenn ich mich hier zu dumm anstelle. Aber das übersteigt meine Fähigkeiten.

https://www.dropbox.com/s/y980ooaxmicdk3u/N29-R_BG.xlsm?dl=0

Danke für den Befehl zu dem Ändern der Bezüge. Da jedoch das Speichern der Dateien vollständig funktioniert, konnte ich ihn nicht ausprobieren.
Den könnte man ja am Ende der Funktion einfach einbauen oder?

Vielen vielen Dank euch allen! :)
0 Punkte
Beantwortet von
Achso,

du meinst mit Zeile 4 die SaveAs Zeile. Auch das dürfte an den verschiedenen
ExcelVersionen liegen. Kann es leider erst morgen testen, aber probier mal:

Sub commandButton1_Click()
Application.DisplayAlerts = False
ThisWorkbook.Worksheets("Auswertung").Copy
ActiveWorkbook.BreakLink Name:="Pfad\N29-R_BG.xlsm", Type:=xlExcelLinks
ActiveWorkbook.SaveAs Filename:="C:\Users\EnteErdnuss\Desktop\" &
Range("B3").Value & ".xlsx", Fileformat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
Gruß Mr. K.
0 Punkte
Beantwortet von
Ach mensch. immer diese fiktiven Zeilenumbrüche beim Einfügen in den Browser.
Sollte die SaveAs Zeile jetzt rot erscheinen mach bei der ersten roten Zeile nach dem
& Zeichen ein Leerzeichen und einen Unterstrich also so: & _
...