Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Speichern per Button

Speichern per Button
07.12.2006 11:14:40
Ronny
Hallo Excel-VBA-Experten,
ich benötige eure Hilfe bei einem VBA Problem, was ich selber nicht hinbekomme.
Ich möchte gern über einen Button "Speichern des Rp-Vergleichs" nur das Tabellenblatt "Rp-Vergleich" in einer seperaten Excel-Tabelle speichern und den Benutzer der diesen Button betätigt die Möglichkeiten geben:
1. den Dateinamen einzugeben ("Bitte geben Sie den Dateinamen ein unter dem Sie diese Tabelle abspeichern möchten!")
2. den Dateipfad über ein Auswahlfenster auszuwählen, was ihn darauf hinweist dies zu tun, dabei sollte Das Auswahlfenster auch die Möglichkeit haben wie bei Windows üblich falls de Ordner nicht existiert in dem man speichern möchte, diesen neu Anlegen zu können, durch z.B. das gelbe Excel-Ordner-Symbol im Speicherfenster
Wichtig dabei ist halt, dass nur das Tabellenblatt "Rp-Vergleich" gespeichert wird und nicht die andern Tabellenblätter!
Ich hoffe das mir jemand von euch da weiterhelfen kann?
Gruß,
Ronny
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern per Button
07.12.2006 11:53:35
Heiko
Hallo Ronny,
z.B. so musst du nur ncoh einen CommandButton1 bei dir einfügen.

Private Sub CommandButton1_Click()
Dim varSaveAsName As Variant
varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xls), *.xls", , " Geben Sie einen Dateinamen zum Speichern an !")
If VarType(varSaveAsName) <> vbBoolean Then
ActiveWorkbook.Worksheets("Rp-Vergleich").Copy
ActiveWorkbook.SaveAs varSaveAsName
ActiveWorkbook.Close
End If
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Speichern per Button
07.12.2006 13:02:49
Ronny
Hi Heiko,
funktioniert spitze, vielen Dank für deine schnelle Hilfe!
Habe aber noch ein Problem:
Und zwar habe ich 3 Buttons in der "Rp-Vergleich" Tabelle und wenn ich diese dann speichere sollen diese 3 Buttons ("ZURÜCK_REA_Messwerte", "Inhaltsverz" und "Speichern_Tabelle_Rp_Vergleich") nicht mit gespeichert werden, da Sie nur in der Hauptdatei aus der ich herraus speichere eine sinnvolle Bedeutung haben!
Wie kann ich dies bewerkstelligen in VBA?
Gruß,
Ronny
Anzeige
AW: Speichern per Button
07.12.2006 13:10:46
Heiko
Hallo Ronny,
was sind das für Buttons aus der Steuerelement Toolbox oder welche aus der Formular Toolbox ?!
Ist zu den Buttons in der Tabelle noch ein Code hinterlegt ?!
Gruß Heiko
AW: Speichern per Button
07.12.2006 13:41:36
Ronny
Hi Heiko,
sind Buttons aus der Steuerelement-Toolbox und ja zu den Buttons sind folgende Codes hinterlegt:

Private Sub Inhaltsverz_Click()
Worksheets("Inhaltsverz.").Select
End Sub


Private Sub Speichern_Tabelle_Rp_Vergleich_Click()
Dim varSaveAsName As Variant
Dim Frage As String
Frage = MsgBox("Wollen Sie wirklich das angezeigte Tabellenblatt Rp-Vergleich in einer seperaten Excel-Datei speichern für künftige Untersuchungen?", [vbYesNo], "Speichern Ja oder Nein?")
If Frage = vbNo Then
Exit Sub
Else
varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xls), *.xls", , " Bitte wählen Sie den Speicherort aus und geben Sie einen Dateinamen zum Speichern an !")
If VarType(varSaveAsName) <> vbBoolean Then
ActiveWorkbook.Worksheets("Rp-Vergleich").Copy
ActiveWorkbook.SaveAs varSaveAsName
ActiveWorkbook.Close
End If
End If
End Sub


Private Sub ZURÜCK_REA_Messwerte_Click()
Worksheets("REA Messwerte").Select
End Sub

Und was nun? ^^
Gruß,
Ronny
Anzeige
AW: Speichern per Button
07.12.2006 14:17:57
Heiko
Hallo Ronny,
solte so gehen:

Private Sub CommandButton1_Click()
Dim varSaveAsName As Variant
Dim objButtons As Object, objVBA As Object
varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xls), *.xls", , " Geben Sie einen Dateinamen zum Speichern an !")
If VarType(varSaveAsName) <> vbBoolean Then
ActiveWorkbook.Worksheets("Rp-Vergleich").Copy
Application.ScreenUpdating = False
With ActiveWorkbook
.SaveAs varSaveAsName
For Each objButtons In .Worksheets("Rp-Vergleich").OLEObjects
If TypeName(objButtons.Object) = "CommandButton" Then
objButtons.Delete
End If
Next objButtons
On Error GoTo Errorhandler
For Each objVBA In .VBProject.VBComponents
With objVBA.CodeModule
.DeleteLines 1, .CountOfLines
End With
Next objVBA
.Save
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
Workbooks.Open varSaveAsName
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.ScreenUpdating = True
End If
Exit Sub
Errorhandler:
Application.ScreenUpdating = True
If Err.Number = 1004 Then
MsgBox "Das Löschen des VBA Codes ist fehlgeschlagen!" & vbCr & _
"Bitte überprüfen Sie folgende Einstellung! " & vbCr & _
"EXTRAS -> MAKRO -> SICHERHEIT -> Vertrauenwürdige Quellen." & vbCr & _
"'Zugriff auf Visual Basic Projekt vertrauen' muss aktiviert sein! ", vbCritical, _
" Meldung VBA Makro"
Else
MsgBox "Err.Number = " & Err.Number & ".   " & Err.Description, vbCritical
End If
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Speichern per Button
07.12.2006 15:20:12
Ronny
Hi Heiko,
bekomme immer Fehlermeldung, einmal die des Errorhandler obwohl die Makroeinstellung IO sind und wenn ich den wie in der Beispieldatei weglasse die ich hier beigefügt habe
https://www.herber.de/bbs/user/38811.xls
dann bekomme ich immernoch eine Fehlermeldung. Was schonmal gut ist, die Buttons werden alle gelöscht, ABER der VBA-Code leider nicht und dieser sollte natürlich auch gelöscht werden, da der Benutzer der sich die Tabelle abspeichert, diesen nicht benötigt!
Kannst du mal bitte in die Tabelle reinschaun die ich beigefügt habe und mir nochmal helfen? Danke für deine Mühe im Voraus!
Gruß,
Ronny
Anzeige
AW: Speichern per Button
07.12.2006 17:35:56
Heiko
Hallo Ronny,
kann ich nicht nachvollziehen, bei mir gibt das keine Fehlermeldung.
Nicht in der Firma (XP und EXCEL 2002) und auch nicht hier zuhaus (ME und EXCEL 2000)
Ist der VBA Code Passwortgeschützt ?
So lief das gerade bei mir:

Private Sub CommandButton1_Click()
Dim varSaveAsName As Variant
Dim objButtons As Object, objVBA As Object
If MsgBox("Wollen Sie wirklich das angezeigte Tabellenblatt  'Rp-Vergleich'  in" & vbCr & _
"einer seperaten Excel-Datei speichern für künftige Untersuchungen?", _
vbYesNo, "Speichern Ja oder Nein?") = vbNo Then
Exit Sub
End If
varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xls), *.xls", , " Geben Sie einen Dateinamen zum Speichern an !")
If VarType(varSaveAsName) <> vbBoolean Then
Application.ScreenUpdating = False
ActiveWorkbook.Worksheets("Rp-Vergleich").Copy
With ActiveWorkbook
.SaveAs varSaveAsName
For Each objButtons In .Worksheets("Rp-Vergleich").OLEObjects
If TypeName(objButtons.Object) = "CommandButton" Then
objButtons.Delete
End If
Next objButtons
On Error GoTo Errorhandler
For Each objVBA In .VBProject.VBComponents
With objVBA.CodeModule
.DeleteLines 1, .CountOfLines
End With
Next objVBA
.Save
.Close
End With
' Das hier hat schon seinen Sinn, da ohne erneutes öffnen und speichern du manuell speichern mußt,
' aber wozu wenn es auch VBA direkt erledigen kann. Öffnet und schließt man aber nicht hier über
' VBA dann wird beim ersten öffen des exportierten Blattes noch gefragt ob man Makros aktivieren will
' obwohl definitiv keine mehr drin sind, ist wohl ne Macke von EXCEL VBA die so überlistet wird.
Workbooks.Open varSaveAsName
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.ScreenUpdating = True
End If
Exit Sub
Errorhandler:
Application.ScreenUpdating = True
If Err.Number = 1004 Then
MsgBox "Das Löschen des VBA Codes ist fehlgeschlagen!" & vbCr & _
"Bitte überprüfen Sie folgende Einstellung! " & vbCr & _
"EXTRAS -> MAKRO -> SICHERHEIT -> Vertrauenwürdige Quellen." & vbCr & _
"'Zugriff auf Visual Basic Projekt vertrauen' muss aktiviert sein! ", vbCritical, _
" Meldung VBA Makro"
Else
MsgBox "Err.Number = " & Err.Number & ".   " & Err.Description, vbCritical
End If
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Speichern per Button
07.12.2006 20:51:51
Ronny
Hi Heiko,
danke funzt schonmal auf den Heim-PC, aber prüfe das morgen gleich nochmal in der Firma auf Firmenrechner, man weis ja nie ;)
Danke auch nochmal dass du erklärt hast im Code wozu das Ende dient, denn ich konnte am Anfang nichts mit anfangen. Stehe sowieso auf Codes mit Kommentare ^^
Vielen dank aus Mitteldeutschlad und beste Grüß,
Ronny
PS: Schreibe dir nochmal im Forum hier morgen dann, ob es geklappt auf den Firmenrechner ^^
Anzeige
AW: Speichern per Button
08.12.2006 07:40:54
Heiko
Hallo Ronny,
danke für die Rückmeldung.
Wenn du aber keine Fragen mehr hast, dann brauchst du den Haken bei bei Frage noch offen nicht setzen. Sonst schauen viele Leute in den Thread um zu helfen und sehen erst nach dem lesen das alles schon erledigt ist, das muss ja nicht sein.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Speichern per Button
08.12.2006 08:15:00
Ronny
Hi Heiko,
sorry hatte dir doch geschrieben, dass ichs erst auf den Frimenrechner noch testen wollte, bevor ich die Frage als beantwortet ansehe, daher hatte ich das Häkchen nochmal gesetzt. Habs getestet und funktioniert super, vielen Dank nochmal Heiko! Hast mir sehr geholfen!
Grüße,
Ronny
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Speichern eines Tabellenblatts über einen Button in Excel


Schritt-für-Schritt-Anleitung

  1. Füge einen Button ein: Gehe in Excel zur Registerkarte "Entwicklertools" und füge einen CommandButton (Steuerelement) in dein Arbeitsblatt ein.

  2. Öffne den VBA-Editor: Klicke mit der rechten Maustaste auf den Button und wähle „Code anzeigen“, um den VBA-Editor zu öffnen.

  3. Füge den folgenden Code ein:

    Private Sub CommandButton1_Click()
       Dim varSaveAsName As Variant
       varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xls), *.xls", , "Geben Sie einen Dateinamen zum Speichern an!")
       If VarType(varSaveAsName) <> vbBoolean Then
           ActiveWorkbook.Worksheets("Rp-Vergleich").Copy
           Application.ScreenUpdating = False
           With ActiveWorkbook
               .SaveAs varSaveAsName
               For Each objButtons In .Worksheets("Rp-Vergleich").OLEObjects
                   If TypeName(objButtons.Object) = "CommandButton" Then
                       objButtons.Delete
                   End If
               Next objButtons
               On Error GoTo Errorhandler
               .VBProject.VBComponents(1).CodeModule.DeleteLines 1, .VBProject.VBComponents(1).CodeModule.CountOfLines
               .Save
               .Close
           End With
           Application.ScreenUpdating = True
       End If
       Exit Sub
    Errorhandler:
       Application.ScreenUpdating = True
       MsgBox "Das Löschen des VBA Codes ist fehlgeschlagen! Bitte überprüfen Sie die Sicherheitseinstellungen.", vbCritical
    End Sub
  4. Speichere deine Arbeit: Schließe den VBA-Editor und speichere deine Excel-Datei, um sicherzustellen, dass die Änderungen übernommen werden.


Häufige Fehler und Lösungen

  • Fehler: "Das Löschen des VBA Codes ist fehlgeschlagen!"
    Lösung: Überprüfe die Makrosicherheitseinstellungen. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und stelle sicher, dass die Option "Zugriff auf das Visual Basic-Projekt vertrauen" aktiviert ist.

  • Problem mit dem Speichern: Wenn der Speichern-Dialog nicht erscheint, kann es sein, dass der Code nicht korrekt eingebunden ist oder der Button nicht richtig konfiguriert wurde. Überprüfe die Schritte zur Einrichtung des CommandButton.


Alternative Methoden

Anstelle eines Buttons kannst du auch eine Schaltfläche aus der Formularsteuerung verwenden, um den gleichen VBA-Code auszuführen. Der Code bleibt gleich, ändere jedoch die Art des Buttons, um eine benutzerfreundliche Oberfläche zu schaffen.


Praktische Beispiele

  1. Speichern eines spezifischen Arbeitsblatts: Der bereitgestellte Code speichert nur das Arbeitsblatt "Rp-Vergleich". Du kannst den Namen des Arbeitsblatts anpassen, um ein anderes Blatt zu speichern.

  2. Benutzerdefinierte Dateinamen: Der Dialog zum Speichern erlaubt es Benutzern, den Dateinamen einzugeben, was die Flexibilität erhöht.


Tipps für Profis

  • Code kommentieren: Füge Kommentare in deinen VBA-Code ein, um die Funktionsweise zu erklären. Dies hilft dir und anderen, den Code später besser zu verstehen.

  • Debugging nutzen: Verwende die Debugging-Funktionen im VBA-Editor, um mögliche Fehlerquellen schnell zu identifizieren.

  • Sicherheitsoptionen: Stelle sicher, dass die Excel-Sicherheitsoptionen für Makros korrekt eingestellt sind, um reibungslose Abläufe beim Speichern zu gewährleisten.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur das Arbeitsblatt "Rp-Vergleich" gespeichert wird?
Der bereitgestellte Code kopiert nur das angegebene Arbeitsblatt und speichert es in einer neuen Datei, sodass keine weiteren Blätter betroffen sind.

2. Was tun, wenn der Speicherbutton nicht funktioniert?
Überprüfe, ob der Button korrekt mit dem VBA-Code verbunden ist. Stelle sicher, dass du den Code im richtigen Modul eingefügt hast und dass Excel die Makros zulässt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige