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

Forumthread: Makro-Datei ohne VBA+Buttons speichern

Makro-Datei ohne VBA+Buttons speichern
28.08.2021 09:05:34
Memo
Guten Morgen zusammen,
Ich habe eine Makro Datei mit diversen Buttons usw.
Diese Datei möchte ich - entweder nach einem klick auf einen neu erstellen Button - oder anderweitig ausführend, auf nach meinem Wunschort und Wunschname ohne Makro/VBA speichern - so jetzt hänge ich hier: Diese Datei soll dann auch bitte ohne Buttons und sonstigen VBA Code gespeichert werden, denn die Datei wird anderen Personen verschickt - sollte als normale Excel sein.
Wie bekomme ich diese Buttons und Codes weg, sodass nach speichern eine wirklich normale Exceldatei ohne VBA und Buttons oder sonst noch eine Spur von VBA übrig bleibt.
Mit diesem Code Funktioniert es nicht.

Sub SpeichernUnter()
Dim strDateiname As String
ChDrive "c:\"
ChDir "\Users\"
Application.Dialogs(xlDialogSaveAs).Show (strDateiname)
End Sub
Anbei eine Beispieldatei wo es nicht funktioniert.
https://www.herber.de/bbs/user/147816.xlsm
Danke für eure Hilfe.
VG
Memo
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 10:29:17
Memo
Hi Werner,
danke für dein Hinweis, den einen Beitrag hatte ich bereits gefunden gehabt.
Jedoch soll ja beides kombiniert werden.
Nach löschen der Buttons (Steuerelemente Buttons) soll die Datei auch ohne VBA Code gespeichert werden.
Den Speicherort sowie den Speichernamen muss der User selbst wählen dürfen.
Wie bekomme ich bei diesem Code hin, dass er mir die Auswahl gibt den Dateinamen selbst zu wählen ? HansWurst soll weg.
DateiName = " " funktioniert nicht.
Dann bekomme ich noch die Fehlermeldung bei fett markierte Zeile. Warum? wird ja auf dem Desktop gespeichert.

Sub datei_save()
Dim DateiName As String
Dim strOrdner As String
With Application.FileDialog(msoFileDialogFolderPicker) '--- Ordner wählen
.InitialFileName = "C:\"
.Title = "Ordnerauswahl"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1)  "\" Then strOrdner = strOrdner & "\"
Else
strOrdner = ""
End If
End With
If strOrdner = "" Then MsgBox ("Kein Ordner gewählt!") Else MsgBox strOrdner
DateiName = "HansWurst"
Application.DisplayAlerts = False '-- Wenn datei vorhanden wird sie überschieben und es wird _
nicht nachgefragt
ActiveWorkbook.SaveAs Filename:=strOrdner & DateiName & " .xlsx ", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False    '-- Wird auf dem Desktop gespeichert"
End Sub
Wie bekomme ich den oberen Code mit diesem Code verschmolzen, also in einer Ausführung:
Natürlich zuerst Buttons weg, danach Datei speichern ohne VBA und Dateiname sowie Ort wählt der User.

Sub SchalterWeg()
Dim objWs As Worksheet
Dim objShp As Shape
For Each objWs In ThisWorkbook.Worksheets
If objWs.Name  "k_Test" Then
For Each objShp In objWs.Shapes
If objShp.Type = 12 Then objShp.Delete
Next
End If
Next
End Sub
Danke + Grüße
Memo
Anzeige
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 11:46:06
Werner
Hallo,

Sub mal_anders()
Dim varFileName As Variant, objWs As Worksheet, objShp As Shape
ChDir "C:/"
varFileName = Application.GetSaveAsFilename(varFileName, "Excel Arbeitsmappe ohne VBA (*.xlsx),*.xlsx,")
'Achtung: eine vorhandene Datei wird
'ohne Nachfrage überschrieben
Application.DisplayAlerts = False
If Not varFileName = False Then
For Each objWs In ThisWorkbook.Worksheets
For Each objShp In objWs.Shapes
If objShp.Type = 12 Then objShp.Delete
Next objShp
Next objWs
ThisWorkbook.SaveAs (varFileName)
Else
MsgBox "Abbruch durch Nutzer."
End If
End Sub
Gruß Werner
Anzeige
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 14:54:16
Memo
Hi Werner,
dieser Code funktioniert bis auf die Fehlermeldung bei
ThisWorkbook.SaveAs (varFileName).
...nachdem ich die Datei mit Wunschnamen speichern möchte.
Habe versucht diese Fehlermeldung durch On error resume next abzufangen :)....aber dann speichert er auch nicht.
Vermutlich habe ich mich nicht korrekt ausgedrückt.. Hier nochmal:
Ich habe eine Makro Datei mit Buttons und Codes. Dies ist eigentlich eine Vorlage - diese Vorlage soll für immer auch so bleiben.
Beim speichern jedoch soll diese Datei nur ohne Buttons und Code gespeichert werden - die Vorlage bleibt weiterhin bestehen.
Der User speichert die Datei dann seinem Wunschort und Name entsprechend ab.
Sorry - kann die Fehlermeldungen noch nicht so entschlüsseln.
VG
Memo
Anzeige
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 15:35:30
Memo
Hi Werner,
hier dein Code in der Datei. Wie bereits zuvor beschrieben, funktioniert teilweise + Fehlermeldung dich ich nicht verstehe.
https://www.herber.de/bbs/user/147818.xlsm
Grüße
Memo
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 16:41:36
Werner
Hallo,
da wurde "oben" nirgendwo ein Dateiname angegeben!
Den Dateinamen legst du im Speichern unter Dialog fest. Entweder du wählst eine vorhandene Datei aus, die dann überschrieben wird, oder du gibst deinen "Wunschnamen" im Feld Dateiname ein.

Option Explicit
Sub mal_anders()
Dim varFileName As Variant, objWs As Worksheet, objShp As Shape
ChDir "C:/"
varFileName = Application.GetSaveAsFilename(varFileName, "Excel Arbeitsmappe ohne VBA (*.xlsx),*.xlsx,")
Application.DisplayAlerts = False
If Not varFileName = False Then
For Each objWs In ThisWorkbook.Worksheets
For Each objShp In objWs.Shapes
If objShp.Type = 12 Then objShp.Delete
Next objShp
Next objWs
ThisWorkbook.SaveAs varFileName, FileFormat:=xlOpenXMLWorkbook
Else
MsgBox "Abbruch durch Nutzer."
End If
End Sub
Gruß Werner
Anzeige
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 17:01:21
Memo
Hi Werner,
genau das will ich ja nicht. Die Dateinamen sind immer variabel. Ich möchte einfach speichern unter Dialog Dateinamen eingeben dann irgendwo abspeichern - ohne Buttons - ohne VBA Codes- das tut es aber nicht. Er speichert einfach nix ab.
Wenn der Dateiname fix wäre dann würde ich ja im Quellcode den Namen angeben - ist es aber nicht.
Bitte teste mal die Datei aus die ich im vorherigen Kommentar geschickt habe und versuche irgendwi abzuspeichern - geht nicht.
Bitte teste mal den Code aus, die ich im vorherigen Kommentar geschickt habe.
Abspeichern geht nicht.
VG
Memo
Anzeige
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 17:51:34
Werner
Hallo,
schätze mal, das Testen wäre wohl eher deine Sache.
Wo habe ich geschrieben, dass der Dateiname fix ist?
Da ist gar nichts fix. Im SaveUnter-Dialog kannst du irgendeinen Dateinamen im entsprechenden Feld eingeben.
Ich frage mich, weshalb du das nicht einfach mit meinem letzten Code mal testest? Weil gemacht hast du das offensichtlich nicht.
Gruß Werner
Anzeige
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 20:14:44
Memo
Hi Werner
Ich meine ich habe dein vorherigen Code getestet, oder doch nicht :/
Werde es testen wenn ich wieder daheim bin.
Danke für deine Rückmeldung.
Bis später.
Grüße
Memo
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 19:09:42
sicci
Hallo,
bei mir funktioniert Werners Makro, mit einer kleinen Änderung in folgender Zeile:
ThisWorkbook.SaveAs (varFileName), FileFormat:=xlWorkbookNormal
Viele Grüße
Anita
Anzeige
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 09:30:58
Hajo_Zi
Hallo Memo,
die Schalter musst Du per VBA löschen.
ActiveSheet.Shapes.Range(Array("CommandButton1", "CommandButton2")).Delete
GrußformelHomepage
Anzeige
AW: Makro-Datei ohne VBA+Buttons speichern
28.08.2021 13:51:06
Memo
Hallo Hajo,
kommt diese Zeile dann in „Diese Arbeitsmappe“ oder als ein alleinständiger Modul?
Oder muss ich deine Zeile hier rein pflanzen? Vermutlich ohne Deklaration funktioniert es nicht, bekomme Fehlermeldung.

Sub SpeichernUnter()
Dim strDateiname As String
ChDrive "c:\"
ChDir "\Users\"
Application.Dialogs(xlDialogSaveAs).Show (strDateiname)
End Sub
VG
Memo
Anzeige
alle Beiträge zu lesen...
28.08.2021 14:04:15
Werner
Hallo,
...ist nicht so deins?
Gruß Werner
AW: alle Beiträge zu lesen...
28.08.2021 14:35:29
Memo
Hi Werner,
doch ich recherchiere immer bevor ich ein Beitrag schreibe.
In diesem Fall wahrscheinlich zu wenig gelesen, ich suche weiter.
Möglicherweise hab ich die wichtigsten überflogen 🧐.
Grüße,
Memo
gut, wenn du....
28.08.2021 14:38:32
Werner
Hallo,
...meinen Code nicht wenigstens mal testen willst, soll mir das auch recht sein.
Gruß Werner
Anzeige
sorry habs später gesehen:) owT
28.08.2021 14:55:21
Memo
..
AW: gut, wenn du....
28.08.2021 22:52:13
Memo
Hallo Werner,
mit diesem Zusatz
FileFormat:=xlWorkbookNormal
zu
ThisWorkbook.SaveAs (varFileName), FileFormat:=xlWorkbookNormal
hat es nun funktioniert.
Danke an alle für eure Mithilfe.
Schönen Abend
Memo
Gerne u. Danke für die Rückmeldung. o.w.T.
29.08.2021 08:57:52
Werner
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro-Datei ohne VBA und Buttons speichern


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei ohne VBA und Buttons zu speichern, befolge diese Schritte:

  1. Erstelle ein neues Makro: Öffne den VBA-Editor (Alt + F11) und erstelle ein neues Modul.

  2. Füge den folgenden Code ein:

    Sub SpeichernOhneVBA()
       Dim varFileName As Variant, objWs As Worksheet, objShp As Shape
    
       ' Öffne den Speichern unter Dialog
       varFileName = Application.GetSaveAsFilename("Excel Arbeitsmappe ohne VBA (*.xlsx),*.xlsx")
    
       ' Überprüfe, ob der Nutzer den Dialog bestätigt hat
       If Not varFileName = False Then
           ' Lösche alle Buttons
           For Each objWs In ThisWorkbook.Worksheets
               For Each objShp In objWs.Shapes
                   If objShp.Type = msoFormControl Then objShp.Delete
               Next objShp
           Next objWs
           ' Speichere die Datei ohne VBA
           ThisWorkbook.SaveAs varFileName, FileFormat:=xlOpenXMLWorkbook
       Else
           MsgBox "Abbruch durch Nutzer."
       End If
    End Sub
  3. Führe das Makro aus: Gehe zurück zu Excel, drücke Alt + F8, wähle SpeichernOhneVBA und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehlermeldung bei ThisWorkbook.SaveAs: Stelle sicher, dass der varFileName korrekt gesetzt ist, bevor du speicherst. Der Fehler tritt häufig auf, wenn der Nutzer den Dialog abbricht.

  • Buttons werden nicht gelöscht: Überprüfe, ob die Buttons als msoFormControl deklariert sind. Der Code löscht nur diese Art von Buttons.

  • Datei wird nicht gespeichert: Achte darauf, dass die Datei nicht schreibgeschützt ist oder dass du die richtigen Berechtigungen zum Speichern in dem gewählten Verzeichnis hast.


Alternative Methoden

Wenn du einen Excel Button ohne Makro einfügen möchtest und keine Programmierung verwenden willst, kannst du dies tun, indem du:

  1. In der Registerkarte "Entwicklertools" auf "Einfügen" klickst.
  2. Wähle "Formularsteuerelemente" und ziehe einen Button in dein Arbeitsblatt.
  3. Weise dem Button keine Makros zu, um ihn als normalen Button zu verwenden.

Um eine Excel-Datei ohne Verknüpfungen zu speichern, gehe zu "Datei" > "Speichern unter" und wähle das Format ".xlsx" aus, um sicherzustellen, dass keine VBA-Codes oder Verknüpfungen gespeichert werden.


Praktische Beispiele

  • Beispiel für das Löschen von Buttons:

    Sub ButtonsEntfernen()
      Dim objShp As Shape
      For Each objShp In ActiveSheet.Shapes
          If objShp.Type = msoFormControl Then objShp.Delete
      Next objShp
    End Sub
  • Beispiel für das Speichern ohne Makros:

    Sub SpeichernOhneMakros()
      ThisWorkbook.SaveAs "C:\DeinPfad\DeineDatei.xlsx", FileFormat:=xlOpenXMLWorkbook
    End Sub

Tipps für Profis

  • Nutze das FileDialog-Objekt, um dem Nutzer die Auswahl des Speicherorts und Dateinamens zu ermöglichen. Dies verbessert die Benutzerfreundlichkeit erheblich.

  • Stelle sicher, dass du alle Schaltflächen und Steuerelemente vor dem Speichern entfernst, um sicherzustellen, dass die Datei wirklich ohne VBA gespeichert wird.

  • Verwende den Option Explicit-Befehl, um sicherzustellen, dass alle Variablen deklariert sind und Fehler durch falsche Schreibweisen vermieden werden.


FAQ: Häufige Fragen

1. Wie kann ich einen Excel Button einfügen ohne Makro? Du kannst einen Button über die Entwicklertools einfügen und ihm keine Aktion zuweisen.

2. Was passiert, wenn ich die Datei nicht als .xlsx speichere? Wenn du die Datei nicht im .xlsx-Format speicherst, bleiben möglicherweise VBA-Codes und Buttons bestehen.

3. Wie lösche ich alle Buttons in einer Excel-Datei? Verwende den VBA-Code, um alle msoFormControl-Buttons in deinen Arbeitsblättern zu löschen, wie im Abschnitt "Praktische Beispiele" beschrieben.

4. Kann ich die Datei auch ohne VBA speichern, ohne einen Button zu verwenden? Ja, du kannst die Datei direkt über das Menü "Datei" > "Speichern unter" speichern, ohne ein Makro zu verwenden.

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