933 Aufrufe
Gefragt in Tabellenkalkulation von finger59 Experte (1.3k Punkte)
Hallo Excelgemeinde,
ich habe in Excel 2003 rund 40 Einzelvorlageblätter, die ich nun zu einer einzigen zusammen führen will.
Dabei geht es mir nun um eine Unsicherheit, ob mein Lösungsweg annehmbar ist oder aufgrund mangelder VBA-Kenntnisse zu einem späteren Disaster führt.
Mir geht es dabei um ein flexibles Speichern - je nachdem welche Informationen vorhanden sind, dann soll das Arbeitsblatt in das Verzeichnis x oder y oder z mit dem Namen, der sich aus den Zellen B17 und K17 zusammensetzt, gespeichert werden.
Habe dieses mit IF versucht zu realiesieren - scheint auch zu funktionieren; bin mir aber dennoch unsicher ob ich es richtig umgesetzt habe oder ob es einen anderen besseren Lösungsweg gibt.
Das Makro sieht wie folgt aus:

Private Sub CommandButton1_Click()
Dim strDateiname As String
Dim strAntwort As String

strDateiname = "Grp. " & Range("b17").Value & "KW " & Range("k17").Value & ".XLS"

If Range("b17").Value = 1 Then
ActiveWorkbook.SaveAs ("G:\Personal\test\" & strDateiname)
End If

If Range("b17").Value = 2 Then
ActiveWorkbook.SaveAs ("G:\Personal\test2\" & strDateiname)
End If

Selection.ClearContents
ActiveWorkbook.Close
End Sub

Ich bedanke mich schon mal im Voraus fürs reinschauen und bin für jeden Tipp dankbar.
In diesem Sinne... noch ein fröhliches Schnee schüppen... Gruß H. Finger

2 Antworten

0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Das provoziert eine Rückfrage: SaveAs oder vielleicht besser SaveCopyAs?

Es ist nämlich so, dass SaveAs die Mappe am Ziel unter neuem Namen speichert wobei die originale ungespeichert zurückbleibt und man womöglich da landet wo man nicht hin will.

Das Problem ließe sich so lösen, obwohl dein Weg schon grundsätzlich OK ist.

Private Sub CommandButton1_Click()
Dim Dateiname As String
Dim Antwort As String

Dateiname = "Grp. " & Cells(17, 2) & "KW " & Cells(17, 11) & ".XLS"

Select Case Cells(17, 2)
Case 1
Antwort = "test"
Case 2
Antwort = "test2"
Case 3
Antwort = "test3"
Case Else
Exit Sub
End Select

ActiveWorkbook.SaveCopyAs ("G:\Personal\" & Antwort & "\" & Dateiname)
ActiveWorkbook.Close (False)
End Sub


Ich gebe hier in der Kürze zu bedenken, dass direktes SaveAs mit folgendem Close meine Bedenken um SaveCopyAs zerstreuen. Du mögest selbst überdenken welche Lösung dir in der Praxis nützlicher ist. (SaveAs wende ich bei ›Vorlagen‹ an, SaveCopyAs aber im Falle von Sicherungskopien, oder wenn ein Original weiterverarbeitet und verteilt wird.)

Ach ja; ich zähle Zeilen und Spalten gern numerisch statt Range und Strings zu verwenden. Ist wesentlich flexibler.

Eric March
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Eric,

zunächst einmal vielen Dank für Deine Rückmeldung.

Werde Deinen Vorschlag mal bei mir umsetzen.

Es ist schon so, dass die Vorlage als ungeänderte Vorlage erhalten bleiben soll und das Arbeitsblatt eben unter dem neuen zusammengesetzten (aus B17 und K17) Namen gespeichert werden soll.

Vielen Dank und mit freundlichen Grüßen... H. Finger
...