1.2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Experten,
ich bin mir sicher, es gibt irgendwo im Netz eine Antwort auf meine (einfache) Frage, aber ich komme mir so hilflos vor...
Aus einer existierenden Datei möchte ich gerne - durch drücken eines Buttons - ein bestimmtes Tabellenblatt ("Kalkulation1") als separates Datenblatt auf dem Desktop als xls-file abspeichern. Der Name des Tabellenblattes soll zusammen mit dem aktuellen Datum der Name der neuen Datei sein.
Könnt Ihr mir hier weiterhelfen?
Im Voraus ein herzliches Dankeschön für Eure Hilfe.

13 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

das folgende Makro gehört in ein Standard-Modul deiner Arbeitsmappe:

Sub desktop_speichern()

Dim strPfad As String

'Pfad anpassen!!
strPfad = "C:\Users\Matze\Desktop\"
'Arbeitsblatt Kalkualtion1 in neue Mappe kopieren
ThisWorkbook.Worksheets("Kalkulation1").Copy
'neue Mappe speichern
With ActiveWorkbook
.SaveAs Filename:=strPfad & .ActiveSheet.Name & "_" & Date & ".xls" 'speichern
End With

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Hi M.O.

vielen Dank für die schnelle Hilfe - funktioniert soweit gut.

Wie muss ich den Pfad optimieren, damit diese Datei von jedem Nutzer auf seinen eigenen Desktop gespeichert wird?
Hintergrund ist: Die Datei (Auswertung-Tool) wird auf einem zentralen Server gespeichert und jeder Nutzer kann dieses Tool nutzen. Das Ergebnis der Auswertung (=Kalkulation1) muss dann auf dem jeweiligen Desktop abgespeichert werden.
Geht das?
Danke im Voraus noch einmal für Deine super Hilfe!!!

Viele Grüße
-matze-
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

dann versuch mal diesen Code.

Sub desktop_speichern()

Dim strPfad As String

'Pfad; Datei wird auf Desktop des in Windows angemeldeten Users abgelegt
strPfad = "C:\Users\" & Environ("Username") & "\Desktop\"
'Arbeitsblatt Kalkualtion1 in neue Mappe kopieren
ThisWorkbook.Worksheets("Kalkulation1").Copy
'neue Mappe speichern
With ActiveWorkbook
.SaveAs Filename:=strPfad & .ActiveSheet.Name & "_" & Date & ".xls" 'speichern
End With

End Sub


Hier wird der Anmeldename von Windows ausgelesen und so der Pfad für den Desktop ermittelt.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi M.O.

es funktioniert!
Herzlichen Dank für die perfekte Hilfe!!!

Viele Grüße
-matze-
0 Punkte
Beantwortet von
Hi,
die Tabelle wird nun als xls-file auf dem Desktop abgespeichert. Jetzt bin ich aber über ein Problem gestolpert, das ich nicht bedacht habe.

Auf dem Tabellenblatt werden die Zahlen / Daten der Kalkulation durch Verknüpfungen aus anderen Datenblätter generiert. Wenn nun das Tabellenblatt vom Desktop aus geöffnet wird, sind die Verknüpfungen nicht mehr aktiv und Teile des Datenblattes leer.

Gibt es hier eine Lösung?
Im Voraus schon ein herzliches Dankschön an alle Experten hier im Forum!

Viele Grüße
-matze-
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Matze,

das dürfte eigentlich kein Problem sein. Die Verknüpfungen werden mitkopiert. Es kommt vielleicht eine Abfrage, ob Hpyerlinks aktiviert oder die Verknüpfungen aktualisiert werden sollen. Voraussetzung ist natürlich, dass die Grunddatei entsprechend gespeichert wird.
Aber selbst wenn die Ursprungsdatei nicht mehr besteht, müsste der letzte gespeicherte Wert in den Zellen stehen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi M.O.
Danke für die schnelle Hilfe.
Besteht die Möglichkeit, die Verknüpfungen in fixe Werte umzuwandeln, bevor das Tabellenblatt abgespeichert wird?!?

Beste Grüße
-matze-
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Matze,

versuch mal das folgende Makro:

Sub desktop_speichern()

Dim strPfad As String
Dim Zelle As Range

'Pfad; Datei wird auf Desktop des in Windows angemeldeten Users abgelegt
strPfad = "C:\Users\" & Environ("Username") & "\Desktop\"
'Arbeitsblatt Kalkualtion1 in neue Mappe kopieren
ThisWorkbook.Worksheets("Kalkulation1").Copy
With ActiveWorkbook
'alle Zellen durchlaufen
For Each Zelle In .ActiveSheet.UsedRange
'falls Formel in Zelle steht, dann
If Zelle.HasFormula = True Then
'prüfen, ob in Formel Verweis auf externe Mappe steht
If InStr(Zelle.Formula, "[") > 0 Then
'falls ja, Wert in entsprechende Zelle schreiben
Zelle = Zelle.Value
End If
End If
Next Zelle
'speichern
.SaveAs Filename:=strPfad & .ActiveSheet.Name & "_" & Date & ".xls"
End With
End Sub

Gruß

M.O.
0 Punkte
Beantwortet von
H M.O.,

denke ich habe das Problem gefunden. Auf dem Datenblatt "Kalkulation1" ist ein Blattschutz.
Kann man diesen im Makro aufheben und nach dem Abspeichern wieder aktivieren?

Sorry für die vielen Fragen!!! Aber ich bin hier echt kein Experte...

Danke im Voraus und
viele Grüße
-matze-
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Matze,

auch das geht. Aber was soll jetzt genau pasieren:

- Blattschutz aufheben
- Tabelle "Kalkulation1" auf dem Desktop abspeichern
- Verweise in Werte umwandeln?
- Blattschutz (nur?) in Urtabelle wieder setzen

Gruß

M.O.
...